紧接上一篇多表查询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的核心概念和实践应用。 1. **MyBatis概述** MyBatis是一个基于Java的持久层框架,它简化了数据库访问,通过XML或注解方式配置和映射原生信息,将接口和...
在这个"Mybatis学习源码的实例代码"中,我们可以深入理解Mybatis的工作机制和内部实现。 首先,让我们从基础开始。Mybatis的主要组件包括SqlSessionFactory、SqlSession和Mapper接口。SqlSessionFactory是Mybatis的...
MyBatis 的核心部分主要由三部分组成:SqlSessionFactoryBuilder、SqlSessionFactory 和 SqlSession。SqlSessionFactoryBuilder 用于构建 SqlSessionFactory,它是 MyBatis 的入口。SqlSessionFactory 是一个创建 ...
在"mybatis学习所需的依赖包"中,我们主要关注以下三个部分: 1. **Ehcache**: Ehcache 是一个广泛使用的开源Java分布式缓存。在MyBatis中,Ehcache可以作为二级缓存,用于存储SQL执行结果,减少对数据库的访问,...
### MyBatis学习笔记 #### 一、MyBatis简介及环境搭建 **MyBatis** 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis...
马士兵老师的MyBatis学习笔记主要涵盖了以下几个核心知识点: 1. **MyBatis安装与环境搭建**:首先,你需要配置Java开发环境,并了解Maven或Gradle构建工具,因为MyBatis通常与这些工具结合使用来管理依赖。然后,...
这个“Mybatis学习资料.rar”压缩包显然包含了丰富的资源,帮助用户深入理解和掌握Mybatis框架。下面将对Mybatis框架的核心概念、功能以及学习路径进行详细讲解。 一、Mybatis简介 Mybatis是一个基于Java的持久层...
通过这个示例,开发者可以了解MyBatis的基本用法,包括配置文件的编写、Mapper接口的定义、XML映射文件的创建以及实体类与数据库表的关联等。 描述中的“mybatis deom”可能是“mybatis demo”的拼写错误,表示这是...
MyBatis Plus是一个基于MyBatis框架的扩展工具,它旨在简化常见的MyBatis操作,如插入、更新、删除和查询。这套学习资料包含了MyBatis Plus的源码和笔记,是深入理解并掌握该框架的宝贵资源。下面将详细阐述MyBatis ...
除了基本的CRUD操作外,MyBatis还支持更复杂的查询,如联表查询、子查询等。 #### 延迟加载 延迟加载是指只有在真正需要使用数据时才加载数据,可以显著提高应用程序的性能。 - **懒加载**:通过`fetchType=lazy`...
在“mybatis学习笔记代码”中,我们可以深入探讨以下几个关键知识点: 1. **MyBatis架构**:MyBatis由SqlSessionFactoryBuilder、SqlSessionFactory和SqlSession三个核心组件构成。SqlSessionFactoryBuilder用于...
【SpringMVC与MyBatis整合查询用户信息】 在Java Web开发中,SpringMVC和MyBatis是两个非常流行的框架。SpringMVC作为控制层,负责处理HTTP请求,而MyBatis则作为数据访问层,处理数据库操作。本教程将深入讲解如何...
【学习MyBatis】 MyBatis 是一个优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解进行配置和原始...
另外,它支持批量操作、关联查询、多表操作、分页查询等功能,极大地提高了开发效率。 通过这个样例项目,你可以学习如何在Spring Boot中配置和使用MyBatis Plus,理解其核心概念和操作方式,从而在实际项目中更...
在三天的Mybatis入门学习过程中,主要涉及以下几个关键知识点: 1. **配置文件**:Mybatis的配置文件(mybatis-config.xml)是整个框架的入口,它包含了数据库连接信息、映射文件位置、设置等重要信息。你需要理解...
标题中的“mybatis学习笔记”指的是对MyBatis框架的学习记录,通常包括基础概念、核心组件、配置文件解析、SQL映射文件的编写、动态SQL、事务管理、缓存机制等内容。学习笔记可能还会涵盖如何集成Spring框架实现依赖...
在本压缩包“Xuefeng的Mybatis学习代码.rar”中,包含了作者Xuefeng对MyBatis深入学习的实践代码,通过多个项目文件帮助理解并掌握MyBatis的核心概念和技术。 第一天的学习通常会从基础入手,可能涵盖以下知识点: ...
MyBatis是一个优秀的Java持久层框架,它支持定制化SQL、存储过程以及高级映射。MyBatis避免了几乎所有的JDBC代码和手动设置参数以及获取结果集。MyBatis可以使用简单的XML或注解进行配置和原始映射,将接口和Java的...