spring
mybatis是否支持延迟加载?
❒ Mybatis支持延迟记载,但默认没有开启 ✔ 单条查询配置 fetchType="lazy" ✔ 全局配置 mybatis-config.xml❒ 什么叫做延迟加载? ✔ 查询用户的时候,把用户所属的订单数据也查询出来,这个是立即加载 ✔ 查询用户的时候,暂时不查询订单数据,当需要订单的时候,再查询订单,这个就是延迟加载 ❒ 延迟加载的原理 1.使用CGLIB创建目标对象的代理对象 2.当调用目标方法user.getOrderlist()时,进入拦截器invoke方法,发现user.getOrderlist()是null值,执行sql查询order列表 3.把order查询上来,然后调用user.setOrderlist(List orderList),接着完成user.qetOrderlist()方法的调用
❒ Mybatis是否支持延迟加载? ✔ 延迟加载的意思是:就是在需要用到数据时才进行加载,不需要用到数据时就不加载数据。 ✔ Mybatis支持一对一关联对象和一对多关联集合对象的延迟加载 ✔ 在Mybatis配置文件中,可以配置是否启用延迟加载lazyLoadingEnabled=true/false,默认是关闭的 ❒ 延迟加载的底层原理知道吗? ✔ 使用CGLIB创建目标对象的代理对象 ✔ 当调用目标方法时,进入拦截器invoke方法,发现目标方法是null值,执行sql查询 ✔ 获取数据以后,调用set方法设置属性值,再继续查询目标方法,就有值了