概述
1.Mybatis仅支持association关联对象和collection关联集合对象的延迟加载
association 指的就是一对一查询
collection 指的就是一对多查询
在Mybatis配置文件中,可以配置是否启用延迟加载
lazyLoadingEnabled=true|false
2.原理是:
使用 CGLIB 创建目标对象的代理对象
当调用目标方法时,进入拦截器方法
调用 a.getB().getName(),拦截器 invoke()方法发现 a.getB()是 null 值
那么就会单独发送事先保存好的查询关联B对象的sql
把B查询上来,然后调用 a.setB(b)
于是a的对象b属性就有值了
接着完成a.getB().getName()方法的调用
1.Mybatis仅支持association关联对象和collection关联集合对象的延迟加载
association 指的就是一对一查询
collection 指的就是一对多查询
在Mybatis配置文件中,可以配置是否启用延迟加载
lazyLoadingEnabled=true|false
2.原理是:
使用 CGLIB 创建目标对象的代理对象
当调用目标方法时,进入拦截器方法
调用 a.getB().getName(),拦截器 invoke()方法发现 a.getB()是 null 值
那么就会单独发送事先保存好的查询关联B对象的sql
把B查询上来,然后调用 a.setB(b)
于是a的对象b属性就有值了
接着完成a.getB().getName()方法的调用
最后
以上就是俭朴帆布鞋为你收集整理的9_Mybatis 是否支持延迟加载,实现原理是什么?的全部内容,希望文章能够帮你解决9_Mybatis 是否支持延迟加载,实现原理是什么?所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复