ibatis 之 复杂类型属性(即自定义类型的属性)
复杂类型用以表示在数据库中相互关系为一对一,一对多的数据。
?
映射文件:
?
?DAO层:
??
类:
?public class Classes {private Integer id;private String name;private List<Student> studentList;private List<Teacher> teacherList;public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public List<Student> getStudentList() {return studentList;}public void setStudentList(List<Student> studentList) {this.studentList = studentList;}public List<Teacher> getTeacherList() {return teacherList;}public void setTeacherList(List<Teacher> teacherList) {this.teacherList = teacherList;}}public class Student {private Integer id;private String name;public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}}public class Teacher {private Integer id;private String name;public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}}?
上面的方法可以一次性查询出所有的记录,ibatis会自动分组,这个可以解决数据量比较小的情况。
但是如果多的一端比如班级的学生数据量比较大,需要分页的话,就不行了。
如果一的一端数据量比较大,比如班级比较多,需要分页的话,我的解决方法是:首先只查询出一页数据的ids,然后再通过ids,
用in的方法查询出数据,很多人说in的性能差,但总比n+1的性能要好很多吧。
?
?