ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

mybatis-映射文件-关联查询

2021-10-10 10:59:44  阅读:188  来源: 互联网

标签:封装 映射 查询 tbl mybatis id select 属性


1、关联查询-联级属性封装结果

如果在Employee类中添加一个Department属性。mybatis要怎么传参和查询数据

示例:
a.首先在创建tbl_dept表在这里插入图片描述b.在tbl_employee表中添加列,并将tbl_dept表的id设为外键

在这里插入图片描述在这里插入图片描述

c、创建部门表的javabean,并在Employee类中添加Department属性
在这里插入图片描述
在这里插入图片描述
d.在接口EmployeeMapperPlus中编写联合查询的方法
在这里插入图片描述
e.在EmployeeMapperPlus映射文件中绑定接口方法和编写sql语句在这里插入图片描述

注意:
联机查询中tbl_dept表中的属性,我们使用级联属性进行封装,即dept.id

f.编写测试代码
在这里插入图片描述

2、使用association定义单个对象的封装规则

我们也可以使用association标签代替联级属性封装
在这里插入图片描述

注意:
association可以指定联合的javaBean对象
property=“dept”:指定哪个属性是联合的对象
javaType:指定这个属性对象的类型[不能省略]

3、使用association进行分步查询

在使用association定义单个对象的封装时sql语句十分繁琐,所以我们可以使用分步查询
select * from tbl_employee where id = #{id}
select * from tbl_dept where id=#{id}

实例:
a.创建DepartmentMapper接口中根据id返回Department对象,然后在DepartmentMapper映射文件中绑定接口方法和编写sql语句
在这里插入图片描述在这里插入图片描述

b.在EmployeeMapperPlus接口中创建一个简单的按id查询员工信息
在这里插入图片描述
c.在EmployeeMapperPlus映射文件中绑定接口方法和编写sql语句

在这里插入图片描述

注意:
association定义关联对象的封装规则
1、property:employee类中需要额外封装的属性
2、select:表明当前属性是调用了select指定的方法查出的结果
3、column:指定将哪一列的值传给这个方法

4、分步查询的延迟加载

有时候我们只想要查询员工表的信息,不需要查询部门表,使用了分步查询两张表的信息都会打印出来。我们可以在mybatis-config文件中添加lazyLoadingEnabled和aggressiveLazyloading标签来配置。

在这里插入图片描述
测试:当使用分布查询,在测试类中只打印Employee的lastName属性

在这里插入图片描述
最终只会执行一条sql语句,不会执行select * from tbl_dept where id=#{id}

5、collection标签定义关联结合类型的属性的封装规则

一个部门有多个员工,我们把多个员工用一个集合封装。在mybatis中该如何实现对集合的查询和封装

示例:

a.在Department类中添加Employee类型的集合属性,然后在DepartmentMapper接口中定义放回部门信息的方法
在这里插入图片描述
在这里插入图片描述
b.在DepartmentMapper映射文件中,绑定接口方法和编写sql语句

在这里插入图片描述
c.查询出关联表的各个字段

在这里插入图片描述

d.在resultMap标签中将查询出的sql字段和javabean属性名进行映射,并使用collection标签封装Employee对象

在这里插入图片描述

注意:
1.property:Department类中的需要封装的集合属性
2.ofType:指定集合属性的类型

e.编写测试类
在这里插入图片描述

6、使用collection标签进行分步查询

由于上个例子的代码过于繁琐,所以我们可以使用分步查询
select * from tbl_department where id=1;
select * from tbl_employee where d_id=1;

示例:
a.在DepartmentMapper接口编写select * from tbl_department where id=1;的方法,并绑定到DepartmentMapper映射文件中。

在这里插入图片描述
在这里插入图片描述

b.在EmployeeMapper接口编写select * from tbl_employee where d_id=1;的方法,并绑定到EmployeeMapper映射文件中。

在这里插入图片描述

在这里插入图片描述

7、discriminator鉴别器的使用

鉴别器:mybatis可以使用discriminate判断某列的值,然后根据某列的值改变封装行为

案例:
封装Employee
如果查出的是女生,就把部门信息查询出来,否则不查询
如果查出的是男生,就把last_name这一列的值赋给email

a.先创建一个resultMap
在这里插入图片描述
b.在resultMap中添加discriminator标签
在这里插入图片描述
c.编写测试
在这里插入图片描述
在这里插入图片描述

标签:封装,映射,查询,tbl,mybatis,id,select,属性
来源: https://blog.csdn.net/m0_47378383/article/details/120661112

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有