首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

mybatis框架之 resultMap 的高级应用

温馨提示:本问阅读需要4分钟,建议收藏后阅读!

各位小伙伴

今天我们来了解

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 完成映射,稍微有点复杂,但是如果系统需要延迟加载,必须使用此方式才能完成。

有任何问题都可以在文章留言,娜姐都看着的呢!

合作,投稿,转载,版权问题请联系 李娜:Lina_Java

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180104A0ZINK00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券