Mybatis的懒加载机制是在association和collection标签中使用,也就是一对一,一对多的时候使用的,这里以一对一为例。
在了解懒加载之前,首先了解一对一查询。
例子:两个表:学生表:sid,name,sex,cid(外键);班级表:id,name,学生到班级是一对一的关系。
public class Stu{ private Integer sId; private String name; private String sex; private Integer cId; private Class c;//.....get/set方法}
在mapper.xml中的配置:
这样就完成了一对一的级联查询映射了。
现在,我想先不查class信息,只有使用class的时候再对数据进行查询:
有两种实现方法:
1、不使用框架带的懒加载机制,就是实现两个statement(查stu,根据id查询class),一个是查询stu单表,当使用对应的class信息时候,调用根据id查询class的statement。这种思路可以完成懒加载机制。
2、使用框架的懒加载机制,在代码不变的条件下修该resultMap的association。
并且在mybatisConfig.xml文件中设置settings关于懒加载的配置
在调试代码时候,打debug断点时候,查看stu中class信息时,会默认调用getClass,所以,效果看不出,可以通过看日志得出懒加载运行了。