mybatis映射文件select_resultMap_关联查询_collection定义关联集合
知识点:查询一个实体类,并查出这个类下面的集合
Employee.java实体类
package com.hand.mybatis.bean;
public class Employee {
private Integer eId;
private String eName;
private Integer gender;
private String email;
private Department dept;
public Employee() {
super();
}
public Employee(Integer eId,String eName, Integer gender, String email) {
super();
this.eId=eId;
this.eName = eName;
this.gender = gender;
this.email = email;
}
public Integer geteId() {
return eId;
}
public void seteId(Integer eId) {
this.eId = eId;
}
public String getEName() {
return eName;
}
public void setEname(String ename) {
this.eName = ename;
}
public Integer getGender() {
return gender;
}
public void setGender(Integer gender) {
this.gender = gender;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public Department getDept() {
return dept;
}
public void setDept(Department dept) {
this.dept = dept;
}
@Override
public String toString() {
return "Employee [eId=" + eId + ", ename=" + eName + ", gender=" + gender + ", email=" + email + "]";
}
}
Department.java实体类
package com.hand.mybatis.bean;
import java.util.List;
public class Department {
private Integer id;
private String departName;
private List<Employee> empList;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getDepartName() {
return departName;
}
public void setDepartName(String departName) {
this.departName = departName;
}
public List<Employee> getEmpList() {
return empList;
}
public void setEmpList(List<Employee> empList) {
this.empList = empList;
}
@Override
public String toString() {
return "Department [id=" + id + ", departName=" + departName + "]";
}
}
DepartmentMapper.java接口
package com.hand.mybatis.dao;
import com.hand.mybatis.bean.Department;
public interface DepartmentMapper {
Department getDeptById(Integer did);
//根据部门id,查询部门信息,同时将部门下的所有员工信息查询出来
Department getDeptByIdPlus(Integer did);
//分步查询部门信息
Department getDeptByIdStep(Integer did);
}
DepartmentMapper.xm l映射文件
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.hand.mybatis.dao.DepartmentMapper">
<!-- Department getDeptById(Integer did); -->
<select id="getDeptById" resultType="com.hand.mybatis.bean.Department">
SELECT did id,deptname departName FROM dept WHERE did=#{did}
</select>
<!--1.查询部门的时候将部门对应的所有员工信息也查询出来
-->
<resultMap type="com.hand.mybatis.bean.Department" id="departmentMap">
<result property="id" column="did"/>
<result property="departName" column="deptname"/>
<!--collection定义关联集合类型的属性的封装规则
ofType:指定集合里面元素的类型 -->
<collection property="empList" ofType="com.hand.mybatis.bean.Employee">
<!-- 定义这个集合元素的封装规则 -->
<id column="eid" property="eId"/>
<result column="ename" property="eName"/>
<result column="email" property="email"/>
<result column="gender" property="gender"/>
</collection>
</resultMap>
<!-- Department getDeptByIdStep(Integer did); --> 接口一:根据部门did查询部门信息,员工信息
<select id="getDeptByIdPlus" resultMap="departmentMap">
SELECT d.did,d.deptname,e.eid,e.ename,e.email,e.gender
FROM dept d
LEFT JOIN emp e
ON d.did=e.did
WHERE d.did=#{did}
</select>
<!--2. select_resultMap关联查询collection分步查询 -->
<resultMap type="com.hand.mybatis.bean.Department" id="departmentMapPlus">
<id column="did" property="id"/>
<result column="deptname" property="departName"/>
<collection property="empList"
select="com.hand.mybatis.dao.EmployeeMapper.getEmpByDeptId"
column="{dId=did}" fetchType="lazy">//可以多列传值
</collection>
</resultMap>
<!--Department getDeptByIdStep(Integer did); -->接口二:根据部门id分步查询员工信息
<select id="getDeptByIdStep" resultMap="departmentMapPlus">
SELECT did,deptname
from dept
WHERE did=#{did}
</select>
<!-- 扩展,多列的值传递过去,将多列的值封装map传递
column="{key1=column1,key2=column2}"
fetchType="lazy":表示使用延迟加载
- lazy:延迟
- eager:立即-->
</mapper>
代码:https://github.com/shuaishuaihand/mybatis.git
mybatis映射文件select_resultMap_关联查询_collection定义关联集合的更多相关文章
- Mybatis3.1-[tp_34-35]-_映射文件_select_resultMap关联查询_collection定义关联集合封装规则_collection分步查询_延迟加载
笔记要点出错分析与总结工程组织 1.定义接口 interface DepartmentMapper package com.dao; import com.bean.Department; publi ...
- MyBatis映射文件的resultMap如何做表关联
MyBatis的核心是其映射文件,SqlMap文件,里面配置了项目中用到了什么SQL语句,和数据库相关的逻辑都在这个映射文件里.顾名思义,映射文件就是对Java对象和SQL的映射.这里简单介绍一下映射 ...
- SSM实战——秒杀系统之DAO层实体定义、接口设计、mybatis映射文件编写、整合Spring与Mybatis
一:DAO实体编码 1:首先,在src目录下,新建org.myseckill.entity包,用于存放实体类: 2:实体类设计 根据前面创建的数据库表以及映射关系,创建实体类. 表一:秒杀商品表 对应 ...
- MyBatis 映射文件详解
1. MyBatis 映射文件之<select>标签 <select>用来定义查询操作; "id": 唯一标识符,需要和接口中的方法名一致; paramet ...
- MyBatis映射文件 相关操作
一.MyBatis映射文件 1.简介 MyBatis 的真正强大在于它的映射语句,也是它的魔力所在.由于它的异常强大,映射器的 XML 文件就显得相对简单.如果拿它跟具有相同功能的 JDBC 代码进行 ...
- MyBatis 映射文件
Mybatis映射文件简介 1) MyBatis 的真正强大在于它的映射语句.由于它的异常强大,映射器的 XML 文件就显得相对简单.如果拿它跟具有相同功能的 JDBC 代码进行对比,你会立即发现省掉 ...
- Mybatis映射文件标签(关于sql)
Mybatis映射文件 1.接口的全限定名和映射文件的namespace一致 <mapper namespace="com.offcn.dao.UserDao"> 2. ...
- Mybatis映射文件完整模板参照
Mybatis映射文件完整模板参照 <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE map ...
- Mybatis映射文件中#取值时指定参数相关规则
Mybatis映射文件中#取值时指定参数相关规则 在#{}中,除了需要的数值外,还可以规定参数的一些其他规则. 例如:javaType,jdbcType,mode(存储过程),numericScale ...
随机推荐
- iOS 内存管理(转载)
N久没维护这个博客了,从开始接触编程到现在已经三四年了.不太习惯写博客,这应该是个不好的习惯.所以从哪哪天开始,我得改变自己 (: . 文采不太好,因此很多的文章都会借鉴他人的,但是我一 ...
- [iPhone硬件]-GPS定位的使用
iPhone中GPS定位如何使用 关键词 1.info.plist配置授权描述 2.引入库 3.CLLocationManager的使用 info.plist配置 在info.plist中根据情况加入 ...
- Writing a Discard Server 写个抛弃服务器 世上最简单的协议
Netty.docs: User guide for 4.x https://netty.io/wiki/user-guide-for-4.x.html The most simplistic pro ...
- 全球数字货币交易所TOP20安全性评级报告
链塔智库2018-05-03 10:28 分析师:常昊.王婧雯 来源: 链塔智库 全球加密数字货币市值超2.5万亿元,单日交易额超2000亿元,全球超过3000万人已投入加密数字货币领域. ...
- Ubuntu 下 chromium浏览器的标签乱码
最近使用ubuntu系统,安装了个chromium浏览器,标题不会乱码,不过标签乱码,火狐浏览器没有这个问题,强大的互联网告诉我是少字体的原因,执行下面的指令即可. sudo apt-get inst ...
- app-framework学习--Scroller
Scroller 这个插件同意你创建一个可滚动区域.我们使用的JavaScript滚轮,除非该设备支持 - WebKit的溢出卷轴:触摸.它有很多修复Android版<3和iOS原生的滚动. 创 ...
- windows脚本-CMD和Batch
一.DOS,CMD和batch DOS是磁盘操作系统(英文:Disk Operating System)的缩写,是个人计算机上的一类操作系统.从1981年直到1995年的15年间,DOS在IBM PC ...
- confluence安装、破解+MariaDB驱动、汉化
下载所需文件:http://fansik.edusaas.com/confluence/安装包:atlassian-confluence-5.8.10-x64.bin 汉化包:Confluence-5 ...
- Java游戏服务器成长之路——弱联网游戏篇(源码分析)
前言 前段时间由于公司的一款弱联网游戏急着上线,没能及时分享,现在基本做的差不多,剩下的就是测试阶段了(本来说元旦来分享一下服务器技术的).公司的这款游戏已经上线一年多了,在我来之前一直都是单机版本, ...
- 处理函数和数组声明[条款17]---《C++必知必会》
指向函数的指针声明和指向数组的指针声明容易混淆,原因在于函数和数组修饰符的优先级比指针修饰符的优先级高,因此通常需要使用圆括号. int *f1( );//一个返回值为 int* 的函数 int ( ...