首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

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

2012-12-18 
ibatis解决多对一n+1问题(更新上传例子(mybatis)代码)n+1问题对系统的性能影响是不言而喻的,ibatis和hiber

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方法就行了

热点排行