美文网首页
mybatis框架之 resultMap 的高级应用

mybatis框架之 resultMap 的高级应用

作者: Java联盟 | 来源:发表于2018-01-04 23:20 被阅读0次

各位小伙伴

今天我们来了解

resultMap 的高级应用

mybatis 查询多表

数据库表结构中存在的几种多表关系:一对一 ,一对多, 多对一 ,多对多

一对一的关系

就比如我们创建一个数据库,有一个用户表,用户表就只会有一个用户名,密码什么的。然后在对应一个用户详情表,之所以要这样做,是因为我们的表的大小是记录数*字段数,要是设计了太多的字段,当数据记录过多的时候,就会减缓查询速度。

多对一的关系

用户表(主表)和部门表(从表)的关系:一个用户只能有一个部门,多个用户属于同一个部门 站在用户表的角度,用户表和部门表的关系是多对一。

需求: 查询用户信息的时候,需要讲用户所属的部门名称查询出来

第一种方式:普通 sql 关联查询,映射用户扩展对象

创建一个返回对象

用 resultType 标签返回新创建的对象 UserDept,写一下接口。

具体的 SQL 语句。

测试运行一下。

第二种方式:用 mybatis 的 resultMap 标签返回

创建一个Dept.Java

在 user 对象加入部门对象的属性,不要忘记set() get() 方法。

写一个接口

SQL语句对于多对一关系的从表的映射 

association :用于多对一那个一的映射。

property:User对象里面新加的关联对象的属性名称。

javaType :属性的类型(部门对象)。

用 resultMap 标签返回查询结果 

一对多的关系

部门表(主表)和用户(从表)的关系:一个部门有多个用户 站在部门表的角度看 部门表和用户表的关系是一对多的关系

需求:查询某个部门下面的所有用户信息

第一种方式:普通的 sql 关联查询,映射到部门扩展对象

创建一个返回对象 DeptUser.java

用 resultType 标签返回新创建的对象 DeptUser,写一个接口。

SQL语句

测试一下

第二种方式 :用 mybatis 的 resultMap 标签返回

在部门对象加入用户集合的属性

用 resultMap 标签返回查询结果,写一个接口。

SQL语句。

对于一对多关系的从表(用户表)的映射

collection :用于一对多那个多的映射

property:Dept 对象里面新加的关联集合对象的属性名称

ofType :属性的类型(用户对象)

测试一下

总结:

第一种方式:会随着sql的变化或者业务需求的变化,返回的对象就会发生改变,那我们每次需要重新定义实体对象,但是相对来说比较简单,所以应用广泛。

第二种方式:需要使用 resultMap 标签里面的 association 完成映射,稍微有点复杂,但是如果系统需要延迟加载,必须使用此方式才能完成。

相关文章

网友评论

      本文标题:mybatis框架之 resultMap 的高级应用

      本文链接:https://www.haomeiwen.com/subject/snodnxtx.html