mybatis 实现一对一,一对多,多对多关联查询 小结
来源:互联网 发布:生产计划编制软件 编辑:程序博客网 时间:2024/06/10 02:10
1 resultType和resultMap小结
1.1 实现一对一查询:
resultType:使用resultType实现较为简单,如果pojo中没有包括查询出来的列名,需要增加列名对应的属性,即可完成映射。
如果没有查询结果的特殊要求建议使用resultType。
定义专门的po类作为输出类型,其中定义了sql查询结果集所有的字段。此方法较为简单,企业中使用普遍。
resultMap:需要单独定义resultMap,实现有点麻烦,如果对查询结果有特殊的要求,使用resultMap可以完成将关联查询映射pojo的属性中。
1.2 实现一对多查询:
resultMap可以实现延迟加载,resultType无法实现延迟加载。
mybatis使用resultMap的collection对关联查询的多条记录映射到一个list集合属性中。
使用resultType实现:
将订单明细映射到orders中的orderdetails中,需要自己处理,使用双重循环遍历,去掉重复记录,将订单明细放在orderdetails中。
1.3 多对多查询总结
将查询用户购买的商品信息明细清单,(用户名、用户地址、购买商品名称、购买商品时间、购买商品数量)
针对上边的需求就使用resultType将查询到的记录映射到一个扩展的pojo中,很简单实现明细清单的功能。
一对多是多对多的特例,如下需求:
查询用户购买的商品信息,用户和商品的关系是多对多关系。
需求1:
查询字段:用户账号、用户名称、用户性别、商品名称、商品价格(最常见)
企业开发中常见明细列表,用户购买商品明细列表,
使用resultType将上边查询列映射到pojo输出。
需求2:
查询字段:用户账号、用户名称、购买商品数量、商品明细(鼠标移上显示明细)
使用resultMap将用户购买的商品明细列表映射到user对象中。
总结:
使用resultMap是针对那些对查询结果映射有特殊要求的功能,,比如特殊要求映射成list中包括多个list。
2 resultMap总结
resultType:
作用:
将查询结果按照sql列名pojo属性名一致性映射到pojo中。
场合:
常见一些明细记录的展示,比如用户购买商品明细,将关联查询信息全部展示在页面时,此时可直接使用resultType将每一条记录映射到pojo中,在前端页面遍历list(list中是pojo)即可。
resultMap:
使用association和collection完成一对一和一对多高级映射(对结果有特殊的映射要求)。
association:
作用:
将关联查询信息映射到一个pojo对象中。
场合:
为了方便查询关联信息可以使用association将关联订单信息映射为用户对象的pojo属性中,比如:查询订单及关联用户信息。
使用resultType无法将查询结果映射到pojo对象的pojo属性中,根据对结果集查询遍历的需要选择使用resultType还是resultMap。
collection:
作用:
将关联查询信息映射到一个list集合中。
场合:
为了方便查询遍历关联信息可以使用collection将关联信息映射到list集合中,比如:查询用户权限范围模块及模块下的菜单,可使用collection将模块映射到模块list中,将菜单列表映射到模块对象的菜单list属性中,这样的作的目的也是方便对查询结果集进行遍历查询。
如果使用resultType无法将查询结果映射到list集合中。
- mybatis 实现一对一,一对多,多对多关联查询 小结
- mybatis一对一,一对多,多对多的关联查询
- mybatis 关联查询 一对一 一对多
- mybatis关联查询,一对一,一对多
- Mybatis一对一、一对多关联查询
- Mybatis关联查询一对一和一对多的实现
- Mybatis关联查询一对一和一对多的实现
- Mybatis关联查询一对一和一对多的实现
- Mybatis关联查询一对一和一对多的实现
- Mybatis关联查询一对一和一对多的实现
- Mybatis关联查询一对一和一对多的实现
- mybatis中实现一对一,一对多查询
- MyBatis实现关联表查询(一对一,一对多,联合查询,嵌套查询)
- mybatis一对一 一对多关联关联
- mybatis一对一,一对多查询
- MyBatis一对一以及一对多关联表查询
- MyBatis学习笔记:一对一和一对多关联表查询
- MyBatis学习--关联表查询--一对一一对多
- arc下的block使用注意事项
- [贪心]HDU1085 Moving Tables
- SPOJ LUCIFER (数位dp)
- java中通过对象,javabean配置文件,反射属性值
- SpringMVC访问静态资源的几种方法
- mybatis 实现一对一,一对多,多对多关联查询 小结
- java模拟http调用百度识图
- js获取项目根路径
- LeetCode——复制图
- android studio 程序真机运行中文显示乱码
- GRE写作必备句型
- uva624 CD (01背包+路径的输出)
- Debug和Release区别
- iOS Sprite Kit教程之申请和下载证书