天天看点

java一对多实体类怎么写_什么是实体表,什么是关系表,一对多和多对多应该怎么设计表?...

这里是修真院后端小课堂,每篇分享文从

【背景介绍】【知识剖析】【常见问题】【解决方案】【编码实战】【扩展思考】【更多讨论】【参考文献】

八个方面深度解析后端知识/技能,本篇分享的是:

【什么是实体表,什么是关系表,一对多和多对多应该怎么设计表?

1 背景介绍】

大家好,我是IT修真院深圳分院第十三期学员,一枚正直纯洁善良的JAVA程序员。 今天给大家分享一下,修真院官网JAVA任务二里面的知识点:

什么是实体表,什么是关系表,一对多和多对多应该怎么设计表?

1 背景介绍

在任务三设计数据库的时候,需要理清表与表数据之间的关系,这时候就需要知道什么是实体表和关系表。然后根据他们之间的关系设计表

2.知识剖析

2.1什么是实体表

实体表就是对应实际的对象的表,比如:学生表,老师表

2.2什么是一对一、一对多和多对多?

1.一对一、一对多和多对多都是指数据表与表中的数据关系,不是表与表之间的关系

2.一对一:一个班主任只属于一个班级,一个班级也只能有一个班主任

3.一对多:一个顾客对应多个订单,而一个订单只能对应一个客户

4.多对多:一个学生有多个老师,一个老师有多个学生

2.3什么是关系表

关系表是表示表与表之间的数据关系,我的理解是:关系表设计一般只存在多对多。

3.常见问题

1)什么是实体表?

2)什么是关系表?

3)怎么设计表,多对多怎么在实际代码中表示?

4.解决方案:

设计表:一对一和一对多在表中多加一个关联字段,多对多多设计一个关联表

代码中实体类的编写:一对一在实体类中多加一个属性,一对多在实体类中多加一个集合属性,多对多就是在两个实体类中各加一个集合属性

5.编码实战

学生表

java一对多实体类怎么写_什么是实体表,什么是关系表,一对多和多对多应该怎么设计表?...

老师表

java一对多实体类怎么写_什么是实体表,什么是关系表,一对多和多对多应该怎么设计表?...

关系表

java一对多实体类怎么写_什么是实体表,什么是关系表,一对多和多对多应该怎么设计表?...

学生实体类

package mybatisTest.pojo;

import java.util.List;

public class Student {

private Integer stuId;

private String stuName;

private Integer age;

private List teachers;

public Integer getStuId() {

return stuId;

}

public void setStuId(Integer stuId) {

this.stuId = stuId;

}

public String getStuName() {

return stuName;

}

public void setStuName(String stuName) {

this.stuName = stuName;

}

public Integer getAge() {

return age;

}

public void setAge(Integer age) {

this.age = age;

}

public List getTeachers() {

return teachers;

}

public void setTeachers(List teachers) {

this.teachers = teachers;

}

@Override

public String toString() {

return "Student{" +

"stuId=" + stuId +

", stuName='" + stuName + '\'' +

", age=" + age +

", teachers=" + teachers +

'}';

}

}

老师实体类

package mybatisTest.pojo;

import java.util.List;

public class Teacher {

private Integer teaId;

private String teaName;

private String gender;

private List students;

public Integer getTeaId() {

return teaId;

}

public void setTeaId(Integer teaId) {

this.teaId = teaId;

}

public String getTeaName() {

return teaName;

}

public void setTeaName(String teaName) {

this.teaName = teaName;

}

public String getGender() {

return gender;

}

public void setGender(String gender) {

this.gender = gender;

}

public List getStudents() {

return students;

}

public void setStudents(List students) {

this.students = students;

}

@Override

public String toString() {

return "Teacher{" +

"teaId=" + teaId +

", teaName='" + teaName + '\'' +

", gender='" + gender + '\'' +

", students=" + students +

'}';

}

}

dao层接口

package mybatisTest.dao;

import mybatisTest.pojo.Student;

import java.util.List;

public interface StuDao {

List queryStu();

}

package mybatisTest.dao;

import mybatisTest.pojo.Teacher;

import java.util.List;

public interface TeaDao {

List queryTea();

}

xml文件

mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"

"http://mybatis.org/dtd/mybatis-3-mapper.dtd">

select s.*,t.*

from student s,teacher t,stu_tea st

where s.stu_id=st.stu_id and t.tea_id=st.tea_id

mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"

"http://mybatis.org/dtd/mybatis-3-mapper.dtd">

SELECT t.*,s.*

from teacher t,student s,stu_tea st

WHERE st.tea_id=t.tea_id

and s.stu_id=st.stu_id

```

测试

Student{stuId=1, stuName='张三', age=15, teachers=[Teacher{teaId=1, teaName='赵六老师', gender='男', students=null}, Teacher{teaId=2, teaName='钱七老师', gender='男', students=null}, Teacher{teaId=3, teaName='二三老师', gender='女', students=null}]}

Student{stuId=2, stuName='李四', age=16, teachers=[Teacher{teaId=2, teaName='钱七老师', gender='男', students=null}, Teacher{teaId=3, teaName='二三老师', gender='女', students=null}]}

Student{stuId=3, stuName='王武', age=17, teachers=[Teacher{teaId=1, teaName='赵六老师', gender='男', students=null}, Teacher{teaId=3, teaName='二三老师', gender='女', students=null}]}

Teacher{teaId=1, teaName='赵六老师', gender='男', students=[Student{stuId=1, stuName='张三', age=15, teachers=null}, Student{stuId=3, stuName='王武', age=17, teachers=null}]}

Teacher{teaId=2, teaName='钱七老师', gender='男', students=[Student{stuId=1, stuName='张三', age=15, teachers=null}, Student{stuId=2, stuName='李四', age=16, teachers=null}]}

Teacher{teaId=3, teaName='二三老师', gender='女', students=[Student{stuId=3, stuName='王武', age=17, teachers=null}, Student{stuId=2, stuName='李四', age=16, teachers=null}, Student{stuId=1, stuName='张三', age=15, teachers=null}]}

6.扩展思考:

在多对多的设计中,关系表好像一般都没有实体类,但如果我要修改多对多之间的关系怎么修改?

注:本人初学java者,如有不对敬请指出,谢谢!

7.参考文献

CSDN、百度百科

8.更多讨论

7.参考文献

CSDN、百度百科

8 更多讨论

总结:

1))什么是实体表?

实体表就是对应实际的对象的表,比如:学生表,老师表

2)什么是关系表?

关系表是表示表与表之间的数据关系,我的理解是:关系表设计一般只存在多对多。

3)怎么设计表,多对多怎么在实际代码中表示?

设计表:一对一和一对多在表中多加一个关联字段,多对多多设计一个关联表

代码中实体类的编写:一对一在实体类中多加一个属性,一对多在实体类中多加一个集合属性,多对多就是在两个实体类中各加一个集合属性

温馨提示:本人初学java者,如有不对敬请指出,谢谢!

PPT链接 视频链接