文章目录
- JDBC多表操作中Bean数据类如何创建
- 1. 一对多/多对一
- 2. 一对一
- 3. 多对多
JDBC多表操作中Bean数据类如何创建
1. 一对多/多对一
比较经典的一对多/多对一的关系就是学生表与年级表,两张表中,学生是多方,年级是一方。一个年级可以有多名学生,但反过来一名学生只属于一个年级。
student表和grade表关系如下所示,student表中的gid可以作为一个外键来维系两表的关系
数据表是通过外键列来维系两表关系。实体类是通过属性来维系两个类的关系
一对多关系中,实体类的创建遵循「一方存多方的集合,多方存一方的对象」的原则
该例中年级是一方,学生是多方,实体类创建如下:
//Student实体类
public class Student {
private int stuid;
private String stuName;
private int stuAge;
private int gid;
private Grade grade; //多方存一方的对象
//setter和getter方法等...
}
//Grade实体类
public class Grade {
private int gradeId;
private String gname;
private List<Student> studentList; //一方存多方的集合
//setter和getter方法等...
}
2. 一对一
一对一在多表关系中存在场景不是很多,现在以妻子和丈夫的关系,模拟一对一的实现过程。
表关系如下:husband表中的wid可以作为一个外键来维系两表的关系
一对多关系中,实体类的创建遵循「一方存另一方的对象」的原则
//Wife实体类
public class Wife {
private int wifeId;
private String wifeName;
private Husband husband; //一方存另一方的对象
//setter and getter
}
//Husband实体类
public class Husband {
private int husId;
private String husName;
private int wid;
private Wife wife; //一方存另一方的对象
//setter and getter
}
3. 多对多
多对多在现实场景中也是不很多,比较特殊的就是权限列表的三表关系。菜单表和角色表之间属于多对多。某个功能菜单可以分配给多个角色,某个角色也可以拥有多个菜单,在这个分配过程中就是典型的多对多。在多对多中,表的创建也比较有特点,必须是基于三张表来实现。
表关系如下:middle表作为中间表,其中的rid和mid都作为外键
中间表不需要生成实体类
多对多关系中,实体类的创建遵循「多方存另一多方的集合」的原则
//Menu实体类
public class Menu {
private int menuId;
private String menuName;
private List<Role> roleList; //多方存另一多方的集合
//getter and setter
}
//Role实体类
public class Role {
private int roleId;
private String roleName;
private List<Menu> menuList; //多方存另一多方的集合
//getter and setter
}