MyBatis 延迟加载(懒加载)笔记

延迟加载(懒加载)是 MyBatis 分步查询的重要特性,指关联数据仅在被访问时才会触发查询,而非在主查询时一次性加载,可大幅优化性能。

一、延迟加载的开启配置

需在 MyBatis 全局配置中开启以下两项:

  1. mybatis.configuration.lazy-loading-enabled=true全局开启延迟加载
  2. mybatis.configuration.aggressive-lazy-loading=false:关闭 “激进式懒加载”(确保仅在访问关联属性时才触发分步查询,而非加载主对象时一次性加载所有关联)。

二、延迟加载与分步查询的关系

延迟加载是分步查询的性能增强特性

  • 分步查询负责将关联查询拆分为多次单表查询;
  • 延迟加载负责控制这些分步查询的执行时机(仅当关联属性被访问时才执行)。

三、作用与优势

  • 性能优化:避免加载未使用的关联数据,减少数据库查询次数和数据传输量。
  • 按需加载:仅在业务需要时加载关联数据,贴合实际使用场景。

四、注意事项

  • 延迟加载仅在分步查询场景下生效,若关联查询是通过 JOIN 实现的,无法触发延迟加载。
  • 若需临时禁用某条 SQL 的延迟加载,可在 <select> 标签中通过 fetchType="eager" 强制立即加载。