示例:

查询用户及用户购买商品信息。

sql语句:

SELECTorders.*, USER .username ,USER .sex,USER .address,orderdetail.id as orderdetail_id,orderdetail.items_id,orderdetail.items_num,orderdetail.orders_id,items.`name` items_name,items.detail items_detail,items.price items_price
FROMorders,USER,orderdetail,items
WHEREorders.user_id = USER .idANDorderdetail.orders_id=orders.idand orderdetail.items_id=items.id

查询结果:

resultMap对应pojo:

Orders:

OrderDetials:

resultMap:

<resultMap type="User" id="UserAndItemsResultMap"><!-- 用户信息 --><id column="user_id" property="id" /><result column="username" property="username" /><result column="sex" property="sex" /><result column="address" property="address" /><!-- 订单信息 --><collection property="ordersList" ofType="cn.itcast.mybatis.po.Orders"><id column="id" property="id" /><result column="user_id" property="userId" /><result column="number" property="number" /><result column="createtime" property="createtime" /><result column="note" property="note" /><!-- 订单明细 --><collection property="orderDetials" ofType="cn.itcast.mybatis.po.OrderDetial"><id column="orderdetail_id" property="id" /><result column="items_id" property="itemsId" /><result column="items_num" property="itemsNum" /><result column="orders_id" property="ordersId" /><association property="items" javaType="cn.itcast.mybatis.po.Items"><id column="items_id" property="id" /><result column="items_name" property="name" /><result column="items_detail" property="detail" /><result column="items_price" property="price" /></association></collection></collection></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 Review——多对多映射相关推荐

  1. Mybatis(四) 高级映射,一对一,一对多,多对多映射

    天气甚好,怎能不学习? 一.单向和双向 包括一对一,一对多,多对多这三种情况,但是每一种又分为单向和双向,在hibernate中我们就详细解析过这单向和双向是啥意思,在这里,在重复一遍,就拿一对多这种 ...

  2. Mybatis中的关系映射(一对一,一对多,多对多)

    在网上寻了很久,大多数讲关系性的文章都是大篇幅的去将表照搬上来,本来就很生硬,此文就不在讲述关系性映射的具体实现,转而从浅层来讲讲其概念性. 1.1 关联关系概述 在关系型数据库中,多表之间存在着三种 ...

  3. mybatis多对一映射association详解

    简单映射(一对一) 多对一映射 方式1:按照查询嵌套处理 方式2:按照结果嵌套处理 简单映射(一对一) mybatis结果集映射ResultMap 多对一映射 我们有2个类,一个班级类ClassRoo ...

  4. Mybatis - 一对多/多对一映射

    文章目录 前言 项目结构 一.数据库表 1. 员工表 t_emp 2. 部门表 t_dept 二.实体类 1. Emp 员工实体类(添加多对一属性) 2. dept 部门实体类(添加一对多属性) 三. ...

  5. 【Mybatis高级映射】一对一映射、一对多映射、多对多映射

    前言 当我们学习heribnate的时候,也就是SSH框架的网上商城的时候,我们就学习过它对应的高级映射,一对一映射,一对多映射,多对多映射.对于SSM的Mybatis来说,肯定也是差不多的.既然开了 ...

  6. Mybatis之表之间映射关系总结

    1.什么是表之间映射关系 就是多张表进行关联,如果查询等操作不只是与一张表有关系,同时其他表也要进行操作. 2.数据库中的连接查询 表结构: 顾客表:customers                 ...

  7. 四、mybatis查询和结果映射

    1.输入映射 mybatis的parameterType只有一个,那么对于传递多个参数一般有两种处理情况 定义包装类型pojo,把条件都写到这个包装类里面 可以使用map 2.输出映射 简单的类型,这 ...

  8. Nhibernate 3.0 cookbook学习笔记 一对多与多对多映射

    1 一对多映射 还是用Movie与ActorRole来说明.我们假设一个Movie可以有多个ActorRole,而一个ActorRole只能对应一个Movie. 设置一对多映射主要是父类(Movie) ...

  9. hibernate多对多映射拆成2个一对多映射(注解)

    hibernate的many to many确实很是方便我们处理实体和集合间的关系,并可以通过级联的方法处理集合,但有的时候many to many不能满足我们的需要,比如 用户<---> ...

  10. 【Hibernate步步为营】--多对多映射详解

    上篇文章详细讨论了一对多映射,在一对多映射中单向的关联映射会有很多问题,所以不建议使用如果非要采用一对多的映射的话可以考虑使用双向关联来优化之间的关系,一对多的映射其实质上是在一的一端使用<ma ...

最新文章

  1. C8-1 复数加减乘除 (100/100 分数)
  2. 后台产品经理入门指南(下)
  3. 隐藏标准选择界面按钮
  4. 消除python变量的值_SPSS变量值标签的批量设置、复制、显示及删除问题
  5. 2016.3.22(关系型数据库简介,管理数据库和表)
  6. 怎样学习和阅读技术书籍?
  7. unity text不能刷新_Unity使用ComputerShader实时压缩RT!
  8. 【牛客 - 551C】CSL 的密码(后缀数组,后缀自动机,随机算法)
  9. ajax jsp模糊查询源码,ajax模糊查询api
  10. mysql初级知识梳理与练习
  11. oracle日志不应用,dg报ORA-600日志不能应用
  12. 分表分页/跨库分页为什么这么难?
  13. 上海译文公布2019年“新书目录” 名家名译作品结集出版
  14. arcgis删除栅格数据波段_Web GIS课程7.2 栅格数据的概念及类型
  15. linux 查看网卡名字
  16. UE4虚拟摄像头插件
  17. win10系统 Windows 资源保护找到了损坏文件 无法修复的有效解决方法
  18. cortex a7 a53_镜头测试:蔡司红T28/2.8+索尼微单A7实拍北京景山公园
  19. 现代电子计算机数学理论基础,知到食品营养学(暨南大学)2020网课答案
  20. 【ESXi中的群晖存储空间扩容】

热门文章

  1. Atitit. visual studio vs2003 vs2005 vs2008  VS2010 vs2012 vs2015新特性 新功能.doc
  2. paip.c++ qt messagebox用法
  3. paip.索引优化---sql distict—order by 法
  4. paip.JAVA的优缺点相比C#.NET VC425
  5. paip..net 程序多语言切换开发的流程总结
  6. paip.跨平台跨语言自定义加密方法
  7. 中国证券IT发展简史(上)
  8. Julia : |>的用法及多参数下的使用
  9. 首届Ceph亚太峰会来了!内有粉丝福利
  10. 【基础教程】基于matlab图像去噪总结【含Matlab源码 1274期】