所谓多表关联查询就是需要查询的数据至少需要涉及两个表。根据数据库之前所学的知识来看,表与表之间的关系存在三种关系关联,有一对一,一对多,多对多。其中多对多就是一对多的升级版,例如A和B存在多对多的关联关系,其实可以看成以A的角度来看,与B有着一对多的关联关系;从B的角度来看,与A也有着一对多的关联关系。所以学会了一对多的关联关系,自然也就学会了多对多的关系。
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语句要进行多表的关联查询语句。然后数据库字段名与实体类属性名进行手动映射,使其一一对应,在进行手动映射时,当对其他数据表和实体类映射时,要使用
eg:需求:查询全部用户数据,关联查询出订单数据;
用户实体类中添加订单的集合,因为一个用户对应多个订单。
public class User {
private Integer id;
private String name;
private String password;
private Integer age;
private String email;
private List orderList;
}
一对多关系使用
多对多的关联关系,其实就是两个一对多的关联关系。
需求:
实现查询所有角色并且加载它所分配的用户信息
首先先实现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;
}