Mybatis 一对一,一对多,多对一,多对多的理解

First (一对一

    首先我来说下一对一的理解,就是一个班主任只属于一个班级,一个班级也只能有一个班主任。好吧这就是对于一对一的理解

怎么来实现呢?

这里我介绍了两种方式:

   一种是:使用嵌套结果映射来处理重复的联合结果的子集   

  另一种呢是:通过执行另外一个SQL映射语句来返回预期的复杂类型

 
 


	
        
    
	
	
	
	
		   
		
		   
			
			
		
	
	
	 
          
	
	
	
		   
		
		   
	
	

  这里对assacation标签的属性进行解释一下:

property 对象属性的名称
javaType 对象属性的类型
column 所对应的外键字段名称
select 使用另一个查询封装的结果

这里ben层会发生变化 这个classes的被bean层会多一个Teacher的属性,并且增加的get,set方法。

Second (一对多)and (多对一

     一对多又是怎么样理解呢?

     其实也很容易,一个顾客对应多个订单,而一个订单只能对应一个客户

     而反过来也就是多对一的形式了

多个订单表可以对应一个顾客,一个顾客是可以拥有多个订单的

其实说到底就是有点类似多个一对一的情况,所以多对一的配置基本和一对一的配置保持一样

   

一对多的xml配置:

 
 
 
 
   
    
     
     
     
     
    
  		
  		
    
	
   
    
        
 
在这里可以明显的看出多出了一个属性ofType,这个ofType的含义就是你collection所对应的是那个bean

当然在bean层中也会发生变化 ,这里在Customer的bean中嵌套一条语句

 private List orders;   //一个Customer 对应N多个Orders


Third (多对多)

      多对多又怎么理解呢?

             一个用户可以属于多个集体(家人,朋友,同学),当然一个集体也包含了多个用户

  
  
  
      
    	
          
              
              
              
          
      
        extends="groupMap">  	
              
            
                  
                  
                  
                  
              
          
      
      
      	  
      
      
          
          
          
          
            delete from user_group  
              
                user_id = #{user.id}  
                and group_id = #{group.id}  
              
          
      
      

这里还需要对user和group这两个bean之间的映射关系进行描述一下:

package com.yc.deom;

import java.util.Date;  

import com.yc.bean.Group;
import com.yc.bean.User;

/** 
 * @describe: 描述User和Group之间的映射关系 
 */  
public class UserGroupLink {  
  
    private User user;  
  
    private Group group;  
  
    private Date createTime;  
  
    public Date getCreateTime() {  
        return createTime;  
    }  
  
    public void setCreateTime(Date createTime) {  
        this.createTime = createTime;  
    }  
  
    public Group getGroup() {  
        return group;  
    }  
  
    public void setGroup(Group group) {  
        this.group = group;  
    }  
  
    public User getUser() {  
        return user;  
    }  
  
    public void setUser(User user) {  
        this.user = user;  
    }  
}  

你可能感兴趣的:(Mybatis)