resultType和resultMap的区别

  1. resultType
    1. 使用resultType实现较为简单,如果pojo中没有包括查询出来的列名,需要增加列名对应的属性,即可完成映射
    2. 如果没有查询结果的特殊要求建议使用resultType
  2. resultMap
    1. 需要单独定义resultMap,实现有点麻烦,如果对查询结果有特殊的要求,使用resultMap可以完成将关联查询映射pojo的属性中
    2. resultMap可以实现延迟加载,resultType无法实现延迟加载。

关系映射

association 1对1映射

实体类:参照gitee integration|mybatis-relation
订单类 OrdersCustomDTO
用户类 SysUser mybatis 关系映射 - 图1```xml

  1. ```json
  2. {
  3. "id": 1,
  4. "userId": 1,
  5. "number": "1000010",
  6. "note": null,
  7. "createTime": "2019-07-10T14:38:04",
  8. "updateTime": "2019-07-10T14:38:04",
  9. "delFlag": "NORMAL",
  10. "user": {
  11. "id": 1,
  12. "userName": "王五",
  13. "birthday": null,
  14. "sex": "FEMALE",
  15. "address": null,
  16. "createTime": null,
  17. "updateTime": null,
  18. "delFlag": null,
  19. "ordersList": null
  20. },
  21. "orderDetails": null,
  22. "userName": null,
  23. "sex": null,
  24. "address": null
  25. }

collection 1对多映射

实体类:参照gitee integration|mybatis-relation
订单类 Orders
订单详情 OrderDetail

mybatis 关系映射 - 图2

  1. <!-- 查询订单(关联用户)及订单明细的resultMap -->
  2. <!-- 总结2-->
  3. <!-- mybatis使用resultMap的collection对关联查询的多条记录映射到一个list集合属性中。-->
  4. <!-- 使用resultType实现:将订单明细映射到orders中的orderdetails中,需要自己处理,使用双重循环遍历,去掉重复记录,将订单明细放在orderdetails中。-->
  5. <resultMap type="net.gaox.relation.entity.Orders" id="ordersAndOrderDetailResultMap" extends="OrdersUserResultMap">
  6. <!-- 订单信息 -->
  7. <!-- 关联用户信息 -->
  8. <!-- 使用extends继承,不用在中配置订单信息和用户信息的映射-->
  9. <!-- 关联订单明细信息
  10. 一个订单关联查询出了多条订单明细,要使用collection映射
  11. collection:对关联查询到的多条记录映射到集合中
  12. property:将关联查询到的多条记录映射到orders类的那个属性
  13. ofType:指定映射的集合属性中pojo的类型
  14. -->
  15. <collection property="orderDetails" ofType="net.gaox.relation.entity.OrderDetail">
  16. <!-- id:唯一标识
  17. property:要将订单明细的唯一标识映射到com.mybatis.entity.OrderDetail的那个属性 -->
  18. <id column="orderdetail_id" property="id"/>
  19. <result column="items_id" property="itemsId"/>
  20. <result column="items_num" property="itemsNum"/>
  21. <result column="orders_id" property="ordersId"/>
  22. </collection>
  23. </resultMap>
  1. {
  2. "id": 1,
  3. "userId": 1,
  4. "number": "1000010",
  5. "note": null,
  6. "createTime": "2019-07-10T14:38:04",
  7. "updateTime": "2019-07-10T14:38:04",
  8. "delFlag": "NORMAL",
  9. "user": {
  10. "id": 1,
  11. "userName": "王五",
  12. "birthday": null,
  13. "sex": "FEMALE",
  14. "address": null,
  15. "createTime": null,
  16. "updateTime": null,
  17. "delFlag": null,
  18. "ordersList": null
  19. },
  20. "orderDetails": [
  21. {
  22. "id": 1,
  23. "ordersId": 1,
  24. "itemsId": 1,
  25. "itemsNum": 1,
  26. "createTime": null,
  27. "updateTime": null,
  28. "delFlag": null,
  29. "item": null
  30. },
  31. {
  32. "id": 2,
  33. "ordersId": 1,
  34. "itemsId": 2,
  35. "itemsNum": 3,
  36. "createTime": null,
  37. "updateTime": null,
  38. "delFlag": null,
  39. "item": null
  40. }
  41. ]
  42. }

时间长了😌