resultType和resultMap的区别
- resultType
- 使用resultType实现较为简单,如果pojo中没有包括查询出来的列名,需要增加列名对应的属性,即可完成映射
- 如果没有查询结果的特殊要求建议使用resultType
- resultMap
- 需要单独定义resultMap,实现有点麻烦,如果对查询结果有特殊的要求,使用resultMap可以完成将关联查询映射pojo的属性中
- resultMap可以实现延迟加载,resultType无法实现延迟加载。
关系映射
association 1对1映射
实体类:参照gitee integration|mybatis-relation
订单类 OrdersCustomDTO
用户类 SysUser
```xml
```json
{
"id": 1,
"userId": 1,
"number": "1000010",
"note": null,
"createTime": "2019-07-10T14:38:04",
"updateTime": "2019-07-10T14:38:04",
"delFlag": "NORMAL",
"user": {
"id": 1,
"userName": "王五",
"birthday": null,
"sex": "FEMALE",
"address": null,
"createTime": null,
"updateTime": null,
"delFlag": null,
"ordersList": null
},
"orderDetails": null,
"userName": null,
"sex": null,
"address": null
}
collection 1对多映射
实体类:参照gitee integration|mybatis-relation
订单类 Orders
订单详情 OrderDetail
<!-- 查询订单(关联用户)及订单明细的resultMap -->
<!-- 总结2-->
<!-- mybatis使用resultMap的collection对关联查询的多条记录映射到一个list集合属性中。-->
<!-- 使用resultType实现:将订单明细映射到orders中的orderdetails中,需要自己处理,使用双重循环遍历,去掉重复记录,将订单明细放在orderdetails中。-->
<resultMap type="net.gaox.relation.entity.Orders" id="ordersAndOrderDetailResultMap" extends="OrdersUserResultMap">
<!-- 订单信息 -->
<!-- 关联用户信息 -->
<!-- 使用extends继承,不用在中配置订单信息和用户信息的映射-->
<!-- 关联订单明细信息
一个订单关联查询出了多条订单明细,要使用collection映射
collection:对关联查询到的多条记录映射到集合中
property:将关联查询到的多条记录映射到orders类的那个属性
ofType:指定映射的集合属性中pojo的类型
-->
<collection property="orderDetails" ofType="net.gaox.relation.entity.OrderDetail">
<!-- id:唯一标识
property:要将订单明细的唯一标识映射到com.mybatis.entity.OrderDetail的那个属性 -->
<id column="orderdetail_id" property="id"/>
<result column="items_id" property="itemsId"/>
<result column="items_num" property="itemsNum"/>
<result column="orders_id" property="ordersId"/>
</collection>
</resultMap>
{
"id": 1,
"userId": 1,
"number": "1000010",
"note": null,
"createTime": "2019-07-10T14:38:04",
"updateTime": "2019-07-10T14:38:04",
"delFlag": "NORMAL",
"user": {
"id": 1,
"userName": "王五",
"birthday": null,
"sex": "FEMALE",
"address": null,
"createTime": null,
"updateTime": null,
"delFlag": null,
"ordersList": null
},
"orderDetails": [
{
"id": 1,
"ordersId": 1,
"itemsId": 1,
"itemsNum": 1,
"createTime": null,
"updateTime": null,
"delFlag": null,
"item": null
},
{
"id": 2,
"ordersId": 1,
"itemsId": 2,
"itemsNum": 3,
"createTime": null,
"updateTime": null,
"delFlag": null,
"item": null
}
]
}
时间长了😌