`

MyBatis学习5之三表查询

阅读更多

紧接上一篇多表查询OneToMany,本篇是三表查询(t_person,t_group,t_user)具体表结构以及测试数据请参看MyBatis多表查询5第一篇。

需求:根据人员的ID查询人员的信息以及所在组和对应的用户登录信息

1、新建一个查询结果实体类

public class BaseInfoVo {
	
	private int id;
	private String name;
	private String telphone;
	private String address;
	private String email;
	private int uid;
	private String userName;
	private String password;
	private int gid;
	private String groupName;
	private String description;
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getTelphone() {
		return telphone;
	}
	public void setTelphone(String telphone) {
		this.telphone = telphone;
	}
	public String getAddress() {
		return address;
	}
	public void setAddress(String address) {
		this.address = address;
	}
	public String getEmail() {
		return email;
	}
	public void setEmail(String email) {
		this.email = email;
	}
	public int getUid() {
		return uid;
	}
	public void setUid(int uid) {
		this.uid = uid;
	}
	public String getUserName() {
		return userName;
	}
	public void setUserName(String userName) {
		this.userName = userName;
	}
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}
	public int getGid() {
		return gid;
	}
	public void setGid(int gid) {
		this.gid = gid;
	}
	public String getGroupName() {
		return groupName;
	}
	public void setGroupName(String groupName) {
		this.groupName = groupName;
	}
	public String getDescription() {
		return description;
	}
	public void setDescription(String description) {
		this.description = description;
	}	
}

 

2、添加对应的sql查询

<select id="personInfo" resultMap="personInfo">
	 	<!--查询某个人的登录用户以及所在组的信息-->
		select p.id,p.name,p.telphone,p.address,p.email,
		u.id uid,u.user_name,u.password,
		g.id gid,g.group_name,g.description
		from t_person p left join t_user u on p.id = u.pid
		left join t_group g on g.id = p.gid
		where p.id = #{id}
	 </select>
	 <resultMap type="com.zlt.mybatis.vo.BaseInfoVo" id="personInfo">
	 	<id property="id" column="id" />
	 	<result property="name" column="name"/>
	 	<result property="telphone" column="telphone"/>
	 	<result property="address" column="address"/>
	 	<result property="email" column="email"/>
	 	<result property="uid" column="uid"/>
	 	<result property="userName" column="user_name"/>
	 	<result property="password" column="password"/>
	 	<result property="gid" column="gid"/>
	 	<result property="groupName" column="group_name"/>
	 	<result property="description" column="description" />
	 </resultMap>

 3、编写单元测试

public void testQuery(){
		SqlSession session = null;
		try{
				session = sqlSessionFactory.openSession();
				String statement = "com.zlt.mybatis.model.Group.personInfo";
				BaseInfoVo person = session.selectOne(statement, 2);
				if(null != person) {
						StringBuffer sb = new StringBuffer();
							sb.append("id:" + person.getId() + "\t")
							.append("name:" + person.getName() + "\t")
							.append("telphone:" + person.getTelphone() + "\t")
							.append("address:" +person.getAddress() + "\t")
							.append("email:" + person.getEmail() + "\t");
							
							sb.append("group-id:" + person.getGid() + "\t")
							  .append("groupName:" + person.getGroupName() +"\t")
							  .append("description:" + person.getDescription() +"\t");
						 
							sb.append("uid:" + person.getUid() + "\t")
							  .append("userName:" + person.getUserName())
							  .append("password:" + person.getPassword());
							System.out.println(sb.toString());
				}
			}finally{
			if(null != session) session.close();
		}

 4、运行结果

id:2	name:李四	telphone:10000	address:浦东新区广兰路	email:lisi@163.com	group-id:1	groupName:Java开发部	description:Java项目组开发	uid:2	userName:lisipassword:123456

 

分享到:
评论

相关推荐

    MyBatis学习实例

    本资源“MyBatis学习实例”旨在帮助你深入理解并掌握MyBatis的核心概念和实践应用。 1. **MyBatis概述** MyBatis是一个基于Java的持久层框架,它简化了数据库访问,通过XML或注解方式配置和映射原生信息,将接口和...

    Mybatis学习源码的实例代码

    在这个"Mybatis学习源码的实例代码"中,我们可以深入理解Mybatis的工作机制和内部实现。 首先,让我们从基础开始。Mybatis的主要组件包括SqlSessionFactory、SqlSession和Mapper接口。SqlSessionFactory是Mybatis的...

    mybatis学习

    MyBatis 的核心部分主要由三部分组成:SqlSessionFactoryBuilder、SqlSessionFactory 和 SqlSession。SqlSessionFactoryBuilder 用于构建 SqlSessionFactory,它是 MyBatis 的入口。SqlSessionFactory 是一个创建 ...

    mybatis学习所需的依赖包

    在"mybatis学习所需的依赖包"中,我们主要关注以下三个部分: 1. **Ehcache**: Ehcache 是一个广泛使用的开源Java分布式缓存。在MyBatis中,Ehcache可以作为二级缓存,用于存储SQL执行结果,减少对数据库的访问,...

    MyBatis学习笔记

    ### MyBatis学习笔记 #### 一、MyBatis简介及环境搭建 **MyBatis** 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis...

    马士兵 mybatis学习笔记

    马士兵老师的MyBatis学习笔记主要涵盖了以下几个核心知识点: 1. **MyBatis安装与环境搭建**:首先,你需要配置Java开发环境,并了解Maven或Gradle构建工具,因为MyBatis通常与这些工具结合使用来管理依赖。然后,...

    Mybatis学习资料.rar

    这个“Mybatis学习资料.rar”压缩包显然包含了丰富的资源,帮助用户深入理解和掌握Mybatis框架。下面将对Mybatis框架的核心概念、功能以及学习路径进行详细讲解。 一、Mybatis简介 Mybatis是一个基于Java的持久层...

    mybatis demo mybatis 实例

    通过这个示例,开发者可以了解MyBatis的基本用法,包括配置文件的编写、Mapper接口的定义、XML映射文件的创建以及实体类与数据库表的关联等。 描述中的“mybatis deom”可能是“mybatis demo”的拼写错误,表示这是...

    MyBatis Plus全套学习资料(带源码和笔记)

    MyBatis Plus是一个基于MyBatis框架的扩展工具,它旨在简化常见的MyBatis操作,如插入、更新、删除和查询。这套学习资料包含了MyBatis Plus的源码和笔记,是深入理解并掌握该框架的宝贵资源。下面将详细阐述MyBatis ...

    mybatis入门的基础三天知识量

    除了基本的CRUD操作外,MyBatis还支持更复杂的查询,如联表查询、子查询等。 #### 延迟加载 延迟加载是指只有在真正需要使用数据时才加载数据,可以显著提高应用程序的性能。 - **懒加载**:通过`fetchType=lazy`...

    mybatis学习笔记代码

    在“mybatis学习笔记代码”中,我们可以深入探讨以下几个关键知识点: 1. **MyBatis架构**:MyBatis由SqlSessionFactoryBuilder、SqlSessionFactory和SqlSession三个核心组件构成。SqlSessionFactoryBuilder用于...

    springMvc+mybatis(查询用户信息)Demo5

    【SpringMVC与MyBatis整合查询用户信息】 在Java Web开发中,SpringMVC和MyBatis是两个非常流行的框架。SpringMVC作为控制层,负责处理HTTP请求,而MyBatis则作为数据访问层,处理数据库操作。本教程将深入讲解如何...

    学习mybatis

    【学习MyBatis】 MyBatis 是一个优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解进行配置和原始...

    mybatis plus操作

    另外,它支持批量操作、关联查询、多表操作、分页查询等功能,极大地提高了开发效率。 通过这个样例项目,你可以学习如何在Spring Boot中配置和使用MyBatis Plus,理解其核心概念和操作方式,从而在实际项目中更...

    Mybatis入门三天源码

    在三天的Mybatis入门学习过程中,主要涉及以下几个关键知识点: 1. **配置文件**:Mybatis的配置文件(mybatis-config.xml)是整个框架的入口,它包含了数据库连接信息、映射文件位置、设置等重要信息。你需要理解...

    mybatis学习笔记和相关帮助文档jar包

    标题中的“mybatis学习笔记”指的是对MyBatis框架的学习记录,通常包括基础概念、核心组件、配置文件解析、SQL映射文件的编写、动态SQL、事务管理、缓存机制等内容。学习笔记可能还会涵盖如何集成Spring框架实现依赖...

    Xuefeng的Mybatis学习代码.rar

    在本压缩包“Xuefeng的Mybatis学习代码.rar”中,包含了作者Xuefeng对MyBatis深入学习的实践代码,通过多个项目文件帮助理解并掌握MyBatis的核心概念和技术。 第一天的学习通常会从基础入手,可能涵盖以下知识点: ...

    MyBatis Source MyBatis源代码

    MyBatis是一个优秀的Java持久层框架,它支持定制化SQL、存储过程以及高级映射。MyBatis避免了几乎所有的JDBC代码和手动设置参数以及获取结果集。MyBatis可以使用简单的XML或注解进行配置和原始映射,将接口和Java的...

Global site tag (gtag.js) - Google Analytics