Mybatis多表关联查询

关联查询关系介绍

        所谓多表关联查询就是需要查询的数据至少需要涉及两个表。根据数据库之前所学的知识来看,表与表之间的关系存在三种关系关联,有一对一,一对多,多对多。其中多对多就是一对多的升级版,例如A和B存在多对多的关联关系,其实可以看成以A的角度来看,与B有着一对多的关联关系;从B的角度来看,与A也有着一对多的关联关系。所以学会了一对多的关联关系,自然也就学会了多对多的关系。

1.一对一的关联关系

eg:需求:查询订单表全部数据,关联查询出订单对应的用户数据;

实体类:

        两个表中对应一对一的关联关系,那么对应的两个实体类也应有一样的关系存在,所以在一个实体类中要建立一种关系。本例子中,需要查询订单数据,根据题目需求的分析,我们要在订单的实体类中添加用户的一对一关系。

public class Order {
    private Integer id;
    private Integer userId;
    private Integer number;
    private Date creatTime;
    private String note;
    private User user;
}

在实体类中添加用户这一属性,一次建立一对一关系。注意:该属性的get和set方法记得添加,还要重写toString方法。

配置映射文件

首先sql语句要进行多表的关联查询语句。然后数据库字段名与实体类属性名进行手动映射,使其一一对应,在进行手动映射时,当对其他数据表和实体类映射时,要使用标签,property对应的是订单实体类添加其他(用户)类的属性名称。javaType对应其属性类型。注意一对一与一对多的标签使用不一样,标签内的内容也有不同,千万不要忘记。

 
    
        
        
        
        
        
        
            
            
            
            
            
        

2.一对多的关联关系

eg:需求:查询全部用户数据,关联查询出订单数据;

实体类:

用户实体类中添加订单的集合,因为一个用户对应多个订单。

public class User {
    private Integer id;
    private String name;
    private String password;
    private Integer age;
    private String email;
    private List orderList;
   
}
配置映射文件

一对多关系使用标签,使用oftype不是javatype


    
        
        
        
        
        
        
            
            
            
            
            
        
    

3.多对多的关联关系

多对多的关联关系,其实就是两个一对多的关联关系。

需求:

实现查询所有角色并且加载它所分配的用户信息

首先先实现Role类的一对多关系

public class Role {
    private Integer id;
    private  String name;
    private String desc;
    private List userList;
}

    
        
        
        
        
            
            
            
            
            
        
    

接着实现用户的一对多关系

public class User {
    private Integer id;
    private String name;
    private String password;
    private Integer age;
    private String email;
    private List roleList;
}
 
    
        
        
        
        
        
        
            
            
            
        
    

你可能感兴趣的:(mybatis,数据库,mybatis,java)