【SSM-MyBatis框架】关联查询--多对多查询


  1. 需求:

       查询用户及用户购买商品的信息:


   2.映射思路:

     将用户信息映射到user中。

    在user中添加List orderList属性,将用户创建的订单映射到orderList属性中。

    在Order中添加List orderDetilList属性,将订单中的明细映射到orderDetilList属性中。

    在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中。






你可能感兴趣的:(【SSM-Mybatis框架】)