①、启动懒加载,mybatis初始化返回类型的时候,会返回一个cglib代理对象,该对象的关联对象(例如一对多,多对一)相关信息就会在loadpair里边,而且添加到loadmap中,cglib对象会过滤get,set ,is,"equals", "clone", "hashCode", "toString"触发方法,而后才会调用loadpair来加载关联对象的值。因此咱们必须在进行懒加载的时候必需要导入相应的jar包,否则会报错。mybatis
②、其实经过上面的例子,咱们很好理解懒加载的原理,就是按需加载。咱们须要什么信息的时候再去查。而不是一次性查询全部的。将复杂的关联查询分解成单表查询,而后经过单表查询的结果去关联查询。app
那么不用mybatis的懒加载咱们也但是实现上面的例子:代理
1、定义两个mapper方法xml
一、查询订单列表对象
二、根据用户 id 查询用户信息blog
2、先去查询第一个mapper方法,获取订单信息列表,而后放入到一个集合中get
3、若是须要用户信息,那么在程序中,咱们能够遍历订单信息,获得用户id,而后经过id去查询用户信息。hash
这与mybatis懒加载的区别就是,mybatis是在mapper.xml文件中配置好关联关系了,咱们直接调用就行了。而本身实现的原理就是手动去创建关联关系。原理