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

1.ResultType实现:


   1.sql语句(mapper.xml):

      


	


   2.pojo类:

创建pojo类,完成上面sql的映射,将查询出来的列不存在的创建出来。原始的order类不能完成映射,需要建立order的扩展类去添加不存在的列。

 

/**
 * 关联查询例子  使用resulttype
 * 
 * @author 
 *
 */
public class OrdersCustom extends Orders{

		/**
		 *  user.username,
  user.sex,
  user.address 
  将关联查询结果中没有的值,添加
		 */
		private String username;
		private String sex;
		private String address;


   3.mapper.java接口


 

/**
	 * 通过reslutType进行一对一查询
	 */
	public List findOrdersCustom();



   4.小结:

 

定义专门的po类作为输出类型,其中定义了sql查询结果集所有的字段。此方法较为简单,企业中使用普遍。


2.ResultMap的实现:


 1.sql语句(mapper.xml):

    


	



			
				
				
				
				
				
				
				
						
						
						
						
				
			



需要关联查询的是用户的信息,是通过association将用户信息映射到订单对象的用户属性中。

    association:表示需要关联查询的单条记录

    property:表示关联查询的结果存储在Order类中的User属性中。

    javaType: 表示关联查询的结果映射类型。




   2.pojo类:

  在订单order类中添加用户user的属性,user属性中存储用于关联查询的用户信息,因为订单与用户是一对一关系,所以这里直接使用单个User对象存储关联查询的用户信息。


    

public class Orders {
    private Integer id;

    private Integer userId;

    private String number;

    private Date createtime;

    private String note;
    
    //用户信息
    private User user;

    3.mapper.java接口


  

/**
	 * 通过resultMap进行一对一查询
	 */
	public List findOrdersCustomResultMap();



    4.小结


    使用association完成关联查询,将结果映射到pojo属性对象中。


   3.ResultType与ResultMap:

   resultType:使用resultType实现较为简单,如果pojo中不包含查询出来的列名,需要增加类名对应的属性。即可完成映射。

                      如果没有特殊要求,建议使用resultType。

   resultMap:需要单独定义ResultMap,实现较为麻烦。如果对查询结果有特殊要求,使用ResultMap可以实现将关联查询映射到pojo的属性对象中。


     resultMap可以实现延迟加载,ResultType不能实现延迟加载。



   







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