← 返回首页
MybatisPlus基础教程(十二)
发表时间:2020-11-02 23:15:23
ManyToOne(多对一)

我们以一个班级有多个学生为例,讲解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);

    }