Mybatis支持延迟加载,但默认没有开启。
延迟加载的意思:在需要用到数据时才进行加载,不需要用到数据时就不加载数据。
Mybatis支持一对一关联对象和一对多管理集合对象的延迟加载
在Mybatis配置文件中,可以配置是否启用延迟加载lazyLoadingEnabled=true,默认是关闭的
延迟加载的底层原理
1、使用CGLIB创建目标对象的代理对象
2、当调用目标方法时,进入拦截器invoke方法,发现目标方法是null值,执行sql查询
3、获取数据以后,调用set方法设置属性值,再继续查询目标方法,就有值了