当前位置: 首页 > news >正文

做技能培训和那个网站合作好宁国网页制作公司

做技能培训和那个网站合作好,宁国网页制作公司,怀化市网站建设,沧县官厅网站建设MyBatis 中的延迟加载是指在需要时才加载对象的某些属性或关联对象,而不是在初始查询时就加载所有数据。这对于性能优化和减少不必要的数据库查询非常有用。 1. 基于配置文件的延迟加载 在 MyBatis 的 XML 映射文件中,你可以使用 lazyLoadingEnabled 和…

MyBatis 中的延迟加载是指在需要时才加载对象的某些属性或关联对象,而不是在初始查询时就加载所有数据。这对于性能优化和减少不必要的数据库查询非常有用。

1. 基于配置文件的延迟加载

在 MyBatis 的 XML 映射文件中,你可以使用 lazyLoadingEnabledaggressiveLazyLoading 属性来配置延迟加载的行为。

  • lazyLoadingEnabled:设置为 true 启用延迟加载,默认为 false。当设置为 true 时,MyBatis 将延迟加载对象的属性。

  • aggressiveLazyLoading:设置为 true 时,MyBatis 会在任何可能的情况下延迟加载对象的属性。默认为 false。

开启方式
  • 方式1:全局设置,在mybatis-config.xml中进行开启
<!-- MyBatis 配置文件 -->
<configuration><settings><setting name="lazyLoadingEnabled" value="true"/><setting name="aggressiveLazyLoading" value="false"/></settings>
</configuration>
  • 方式2:局部设置,<association>和<collection>有个fetchType属性可以覆盖全局的懒加载状态:eager表示这个级联不使用懒加载要立即加载,lazy表示使用懒加载。
    <resultMap id="getUserById2Result" type="com.by.pojo.User">... ...<!--property="accountList":pojo的属性ofType="account":集合的泛型select="com.by.mapper.AccountMapper.selectAccountByUid":要调用的select标签的idcolumn="id":传递的参数fetchType="lazy":局部开启延迟加载--><collection property="accountList"ofType="account"select="com.by.mapper.AccountMapper.selectAccountByUid"column="id"fetchType="lazy"></collection></resultMap><select id="getUserById2" parameterType="int" resultMap="getUserById2Result">select * from user where id=#{id}</select>

2. 关联关系的延迟加载

在映射文件中,可以使用 <association><collection> 标签设置延迟加载。这样,在查询主对象时,关联对象的数据不会立即加载,只有在需要访问关联对象时才会执行额外的查询获取数据。

<!-- 用户表映射文件 UserMapper.xml -->
<select id="getUserWithOrders" resultMap="userWithOrders" parameterType="int">SELECT * FROM users WHERE id = #{userId}
</select><resultMap id="userWithOrders" type="User"><id property="id" column="id" /><!-- 其他用户属性 --><collection property="orders" ofType="Order" lazyLoad="true"><id property="orderId" column="order_id" /><!-- 其他订单属性 --></collection>
</resultMap>

3. 使用注解实现延迟加载

在 MyBatis 中也可以使用注解来实现延迟加载,例如使用 @Lazy 注解标注关联对象或集合。

public class User {private int id;private String username;@Lazyprivate List<Order> orders;// Getters and setters
}

注意事项

  • 延迟加载可以减少不必要的数据库查询,但如果不谨慎使用,可能会导致 N+1 查询问题(执行大量额外的查询)或者产生潜在的性能问题。
  • 使用延迟加载时,需要留意 Session 的生命周期。在对象加载时 Session 必须仍然处于打开状态,否则延迟加载可能会引发异常。

延迟加载是一个强大的特性,但需要根据实际情况谨慎使用,以确保在性能和数据一致性之间取得平衡。

http://www.yayakq.cn/news/72321/

相关文章:

  • 秀山网站建设重庆建设工程质量监督检测中心有限公司
  • 广告网站制作多少钱二手图书交易网站建设
  • 建设网站用什么语言编写文登区建设局网站
  • 如何运用企业官方网站做宣传网站开发技能
  • 企业网站策划书模板范文山东网站建设和游戏开发的公司
  • 永久免费自动建站建站行业解决方案
  • 关于电影网站的论文摘要网站seo排名优化工具在线
  • 做医学期刊杂志网站11108给换成119333做网站
  • 国外优秀的html5网站手机建站平台哪个便宜
  • 网站前端切图做多个页面亚马逊aws永久免费服务69
  • 汉中专业网站建设价格wordpress theme one-column
  • 包头学做网站app免费开发
  • 怎么用服务器做局域网网站呼伦贝尔市建设网站
  • 怎么做企业网站推广需要多少钱视频教育网站开发
  • 网站内容优化细节网站建设捌金手指花总十三
  • 陕煤化建设集团铜川分公司网站wordpress 视频播放大小
  • 免费网上商城网站建设上海互联网企业50强
  • 15年做啥网站致富越秀金融大厦地址
  • ppt模板有哪些网站杭州下城区建设局网站
  • 在哪些网站做推广比较好网站设计 做鼠标效果
  • 网站图片怎么做缓存制作网站公司 英语网站首页
  • 网站主页如何配色饿了么网站怎么做的
  • 东莞网站SEO优化托管html网页设计表格代码
  • 重庆的电子商务网站怎么原创视频网站
  • 网站搜索引擎优化主要方法上海营销网站设计
  • 电脑城网站开发需求分析给公司做网站数据分析
  • 锦江区建设和交通局网站福田公司怎么样
  • 免费网站alexa排名查询网站建设费如何做账
  • 百度怎么优化网站关键词外链查询网站
  • 网站后台如何登陆网站建设企业文化