返回
Mybatis注解实现多对多、多对一增删改查操作
见解分享
2023-09-21 11:48:12
前言
MyBatis 是一款优秀的持久层框架,它可以帮助我们轻松地完成数据库的增删改查操作。在 MyBatis 中,我们可以通过注解的方式来实现多表操作,包括多对多和多对一操作。
多对多操作
在多对多关系中,两个表之间存在着多对多的关系,即一个表中的一个记录可以对应多个另一个表中的记录,反之亦然。例如,学生表和课程表之间就存在着多对多的关系,一个学生可以选修多门课程,一门课程也可以被多个学生选修。
多对一操作
在多对一关系中,两个表之间存在着多对一的关系,即一个表中的一个记录可以对应多个另一个表中的记录,但另一个表中的一个记录只能对应一个第一个表中的记录。例如,学生表和班级表之间就存在着多对一的关系,一个学生只能属于一个班级,但一个班级可以有多个学生。
注解实现
在 MyBatis 中,我们可以通过注解的方式来实现多对多和多对一操作。具体操作如下:
1. 多对多操作
@Entity
public class Student {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
@ManyToMany
@JoinTable(name = "student_course",
joinColumns = @JoinColumn(name = "student_id"),
inverseJoinColumns = @JoinColumn(name = "course_id"))
private Set<Course> courses;
// 省略其他代码
}
@Entity
public class Course {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
@ManyToMany(mappedBy = "courses")
private Set<Student> students;
// 省略其他代码
}
2. 多对一操作
@Entity
public class Student {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
@ManyToOne
@JoinColumn(name = "class_id")
private Class clazz;
// 省略其他代码
}
@Entity
public class Class {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
@OneToMany(mappedBy = "clazz")
private Set<Student> students;
// 省略其他代码
}
结语
通过注解的方式,我们可以轻松地实现 MyBatis 的多对多和多对一操作。这些操作对于我们开发复杂的应用程序非常有用。