孩子练体育会不会变得agressivelazyloading

如果查询订单并且关联查询用户信息如果先查询订单信息即可满足要求,当我们需要查询用户信息时再查询用户信息把对用户信息的按需去查询就是延迟加载。

延迟加载:先从单表查询需要时再从关联表去关联查询,大大提高数据库性能因为查询单表要比关联查询多张表速度要快。

1、需求:查询訂单并且关联查询用户信息
<!-- 查询订单关联查询用户用户信息需要延迟加载 -->
2)  关联查询用户信息

通过上边查询到的订单信息中user_id去关联查询鼡户信息

column:订单信息中关联用户信息的列,是user_id
 4、打开延迟加载开关
<!-- 将积极加载改为消息加载即按需加载 -->

lazyLoadingEnabled:设置懒加载默认为false。如果为false:則所有相关联的都会被初始化加载

aggressiveLazyLoading:默认为true。当设置为true时懒加载的对象可能被任何懒属性全部加载;否则,每个属性按需加载

定义兩个mapper方法:

先去查询第一个mapper方法,获取订单信息列表;在程序中(service)按需去调用第二个mapper方法去查询用户信息。

使用延迟加载方法先去查询简单的sql(最好单表,也可关联查询)再去按需加载关联查询的其他信息。

}
// 如果你在这里打一个断点,你会发現还没有执行到getUser()这一句article.user已经被查询加载 // 我的理解是java是编译型语言,mybatis可以根据编译好的中间码查看哪些属性被调用 // 然后在第一次执行sql的时候把後面将会调用到的延迟加载属性都提前加载了 // 另外,MyBatis有个更搞笑和骗人的地方是,如果你不在这里打断点,它lazy load的子查询就一定会出现在getUser()之后
 

也就昰说我们也无法使用JOIN去使用Lazy Loading,从而避免n+1的问题

}

我要回帖

更多关于 女生练体育的危害 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信