即一个班级对象里面有自身的班级信息,一个班主任的Object信息和一个学生对象的List信息。
创建了三个表
1.班级表t_class
2.学生表t_student
3.班主任表t_teacher
查询的sql是这样的
我们可以知道,老师和班级是一个对象,三条数据中的老师和班级信息都是一样的,只有学生的信息不同。
在xml代码中的体现如下,property是java实体类的属性名称,column是sql返回的字段名称。
注意:如果property和column的参数一样的话,此result标签可以不写,仅限result标签,id标签不能省略。
SELECT c.*, s.id as stuId, s.name as stuName, s.age, tt.`Name` as teacherName, tt.age as teacherAge FROM t_class c LEFT JOIN t_student s ON c.id = s.class_id LEFT JOIN t_teacher tt on tt.class_id=c.id where c.id=#{classId}
其中,association 标签必须在collection之前(如果两个都有的话),不然会报错,而且javaType必须指定。
最后给大家看看我的三个实体类。
@Data
@Accessors(chain = true)
public class TClass {
@TableId("id")
private Long id;
private String name;
private String detail;
@TableField(exist = false)
private List students;
@TableField(exist = false)
private TTeacher teacher;
}
@Data
@Accessors(chain = true)
public class TStudent {
@TableId("id")
private Long id;
private Integer classId;
private String name;
private Integer age;
}
@Data
@Accessors(chain = true)
@ApiModel(value="TTeacher对象", description="")
public class TTeacher{
@TableId("id")
private Long id;
private Integer classId;
private String name;
private Integer age;
}



