简单映射(一对一)
一对多映射
我们有2个类,一个班级类ClassRoom,一个学生类Student
班级类代码如下
package com.lingaolu.pojo; /** * @author 林高禄 * @create 2020-10-26-20:17 */ public class ClassRoom { private Long id; private String name; public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } @Override public String toString() { return "ClassRoom{" + "id=" + id + ", name='" + name + '\'' + '}'; } }
学生类代码如下,下面的注解是使用lombokLombok的使用步骤
package com.lingaolu.pojo; import lombok.*; /** * @author 林高禄 * @create 2020-10-26-17:43 */ @Data @AllArgsConstructor @NoArgsConstructor public class Student { private Long id; private String name; private String ageNum; private Long classId; }
现在我们想查询班级的时候,把相应的本级内的学生信息也查出来,所以我们建一个班级的vo类,ClassRoomVo,继承ClassRoom,另外加属性学生的集合students
package com.lingaolu.vo; import com.lingaolu.pojo.ClassRoom; import com.lingaolu.pojo.Student; import java.util.List; /** * @author 林高禄 * @create 2020-10-27-19:32 */ public class ClassRoomVo extends ClassRoom { private List<Student> students; public List<Student> getStudents() { return students; } public void setStudents(List<Student> students) { this.students = students; } @Override public String toString() { return "ClassRoomVo{" + super.toString()+","+ "students=" + students + '}'; } }
方式1:按照查询嵌套处理
单元测试结果
这里学生的年龄和班级id没有查出来,是因为属性名和数据库列名不一致导致的,所以查询学生的时候,在做一次映射就好了
方式2:按照结果嵌套处理
单元测试结果