文章目录

  • JDBC多表操作中Bean数据类如何创建
  • 1. 一对多/多对一
  • 2. 一对一
  • 3. 多对多

JDBC多表操作中Bean数据类如何创建

1. 一对多/多对一

比较经典的一对多/多对一的关系就是学生表与年级表,两张表中,学生是多方,年级是一方。一个年级可以有多名学生,但反过来一名学生只属于一个年级。

student表和grade表关系如下所示,student表中的gid可以作为一个外键来维系两表的关系

java 两张表 sql 判断 另一张表对应的 数据某个字段是否有值_实体类

数据表是通过外键列来维系两表关系。实体类是通过属性来维系两个类的关系

一对多关系中,实体类的创建遵循「一方存多方的集合,多方存一方的对象」的原则

该例中年级是一方,学生是多方,实体类创建如下:

//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可以作为一个外键来维系两表的关系

java 两张表 sql 判断 另一张表对应的 数据某个字段是否有值_一对多_02

一对多关系中,实体类的创建遵循「一方存另一方的对象」的原则

//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都作为外键

java 两张表 sql 判断 另一张表对应的 数据某个字段是否有值_一对多_03

中间表不需要生成实体类

多对多关系中,实体类的创建遵循「多方存另一多方的集合」的原则

//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
}