Spring Boot 3 中 MyBatis 自动配置原理
Spring Boot 3 中 MyBatis 自动配置原理
基线:Spring Boot 3.x、MyBatis Spring Boot Starter 3.x、MyBatis 3.5.x、Java 17+。Boot 2 的 javax 依赖不能与 Boot 3 的 jakarta 依赖混用。
1. Starter 的职责
DataSource -> SqlSessionFactory -> SqlSessionTemplate -> Mapper 代理
自动配置根据 classpath、已有 Bean 和属性决定是否创建对象。当前入口以依赖包中的 AutoConfiguration.imports、配置元数据和条件评估报告为准,不要依赖旧版 spring.factories。
2. 最小配置
mybatis:
mapper-locations: classpath:/mapper/**/*.xml
type-aliases-package: com.example.order.domain
configuration:
map-underscore-to-camel-case: true
default-statement-timeout: 5
@Mapper
public interface OrderMapper {
Order findById(long id);
}
3. Bean 创建链路
Boot 创建 DataSource;MyBatis 创建 SqlSessionFactory;读取 XML、TypeHandler 和插件;创建 SqlSessionTemplate;Mapper 扫描器注册 MapperFactoryBean;最后返回 Mapper 代理。
@Transactional 应放在服务层。多数据源必须显式配置每个 SqlSessionFactory、Mapper 扫描范围和事务管理器。使用 #{} 参数绑定;${} 是字符串拼接,只能接收白名单字段。