1. 需求:
查询用户及用户购买商品的信息:
2.映射思路:
将用户信息映射到user中。
在user中添加List
在Order中添加List
在OrderDeti类中,添加Items item属性,将商品信息映射到Item中。
3.pojo类:
User:
public class User {
private int id;
private String username;// 用户姓名
private String sex;// 性别
private Date birthday;// 生日
private String address;// 地址
private List orders;
Orders:
public class Orders {
private Integer id;
private Integer userId;
private String number;
private Date createtime;
private String note;
//用户信息
private User user;
private List orderdetails;
Orderdetail:
public class Orderdetail {
private Integer id;
private Integer ordersId;
private Integer itemsId;
private Integer itemsNum;
//明细对应的商品信息
private Items items;
4.mapper.xml:
5.mapper.java 接口:
/**
* 多对多
*/
public List findUser();
6.多对多总结:
将查询用户购买的商品信息明细清单,(用户名、用户地址、购买商品名称、购买商品时间、购买商品数量)
针对上边的需求就使用resultType将查询到的记录映射到一个扩展的pojo中,很简单实现明细清单的功能。
一对多是多对多的特例,如下需求:
查询用户购买的商品信息,用户和商品的关系是多对多关系。
需求1:
查询字段:用户账号、用户名称、用户性别、商品名称、商品价格(最常见)
企业开发中常见明细列表,用户购买商品明细列表,
使用resultType将上边查询列映射到pojo输出。
需求2:
查询字段:用户账号、用户名称、购买商品数量、商品明细(鼠标移上显示明细)
使用resultMap将用户购买的商品明细列表映射到user对象中。
总结:
使用resultMap是针对那些对查询结果映射有特殊要求的功能,,比如特殊要求映射成list中包括多个list。
7.ResultMap总结:
ResultType:
作用:
将查询的结果按照pojo属性名,一一映射到pojo的属性中去。
场合:
常见一些明细信息的展示,比如用户购买的商品的明细,将关联查询的信息全部展示在页面上时,此时可是使用ResultType将每条记录映射到pojo类中,在前端页面遍历list即可。
ResultMap:
使用association和collection完成一对一和一对多的高级映射(对结果集有特殊要求)。
association:
作用:
将关联查询表,映射到一个pojo对象中。
场合:
为了方便查询关联信息可以使用association将关联订单信息映射为pojo对象的pojo属性中。如:查询订单和关联用户信息。
使用ResultType无法将查询结果映射到pojo对象中pojo属性里,根据对结果集查询遍历的需要选择使用ResultType还是使用ResultMap。
collection:
作用:
将关联查询出来的信息,映射到一个list集合中。
场合:
为了方便查询遍历关联信息,可是使用collection将关联信息映射到list集合中。如:查询用户权限范围模块及模块下的菜单,可以使用collection将模块及模块下的菜单,映射到list中。目的是为了方便查询结果集进行遍历查询。
如果使用ResultType无法映射到list中。