读书人

ibatis解决多对一n+1有关问题(更新下

发布时间: 2012-12-18 12:43:41 作者: rapoo

ibatis解决多对一n+1问题(更新上传例子(mybatis)代码)

n+1问题对系统的性能影响是不言而喻的,ibatis和hibernate一样也存在n+1问题,比如一个学生所属的班级,

在查询学生的时候同时把班级信息也查询出来,如果按照ibatis普通的多对一映射方法配置的话,就会出现n+1问题。

其实ibatis有种方法可以避免的,代码如下。

ibatis配置文件:

?类:

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;private Classes classes;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 Classes getClasses() {return classes;}public void setClasses(Classes classes) {this.classes = classes;}}

?

以上代码的实现方式,是采用一条sql join查询出所有的数据,然后使用resultMap进行映射,resultMap确实是个好东西啊。

?

?

更新:

?上传了mybatis的例子代码,使用hsqldb做数据库,直接运行DbManager类的main方法就行了

读书人网 >编程

热点推荐