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内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复