我们以一个班级有多个学生为例,讲解MybatisPlus如何实现多对一的映射关系。
1)创建实体类 ClassRoom.java(班级类)
package com.oracle.entity;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.hibernate.annotations.GenericGenerator;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import java.io.Serializable;
@Entity
@Data
@NoArgsConstructor
@AllArgsConstructor
public class ClassRoom extends BaseEntity implements Serializable,Cloneable {
@Id
@GeneratedValue(generator="mycid")
@GenericGenerator(name="mycid",strategy="assigned")
@Column(length = 4)
private String cid; //班级编号
private String cname; //班级的名称
}
Students.java(学生类)
package com.oracle.entity;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.persistence.*;
import java.io.Serializable;
@Data
@NoArgsConstructor
@AllArgsConstructor
@Entity //表示这个类对应数据库中的一张表
public class Students extends BaseEntity implements Serializable,Cloneable {
//既然是表,就必须有主键
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY) //使用数据库默认的主键生成策略
@TableId(type = IdType.AUTO)
private int sid; //主键
@Column(length = 20) //规定学生的姓名不超过20个字符
private String sname; //姓名,默认是占用255个字符。
@Column(length = 2)
private String gender; //性别
@Column(length = 32)
private String birthday; //出生日期
private String school; //所在学校
private String major; //所学的专业
private boolean status; //状态 1:在籍 0:辍学
@Column(length = 4)
private String cid; //班级的编号
}
测试多对一的映射关系。由于篇幅限制Students和ClassRoom的Mapper和Service层代码省略,大家可以自行参考前面案例实现。
@Test
public void testSaveStudents(){
ClassRoom classRoom = new ClassRoom("C001","四川工业学院软件工程1班");
classRoomService.insertWithMybatis(classRoom);
Students s1 = new Students(1,"张三","男","1999-10-10","四川工业学院","软件工程",true,classRoom.getCid());
Students s2 = new Students(2,"李四","女","2000-10-10","四川工业学院","软件工程",true,classRoom.getCid());
Students s3 = new Students(3,"王五","男","1999-10-10","四川工业学院","软件工程",true,classRoom.getCid());
studentsService.insertWithMybatis(s1);
studentsService.insertWithMybatis(s2);
studentsService.insertWithMybatis(s3);
}
