spring boot集成mybatis只需三步:加mybatis-spring-boot-starter等依赖、在application.yml中配置数据源和mybatis参数、编写mapper接口(注解或xml方式),自动装配sqlsessionfactory,无需手动配置。

Spring Boot 集成 MyBatis 很直接,核心就三步:加依赖、配数据源、写 Mapper。不用手配 SqlSessionFactory,全靠 mybatis-spring-boot-starter 自动装配。
1. 引入正确依赖
别手动引 mybatis 和 mybatis-spring,那是老式 SSM 做法。Spring Boot 项目只加官方 starter:
-
mybatis-spring-boot-starter(必须,含自动配置) - 对应数据库驱动,比如
mysql-connector-j(MySQL 8.0+ 推荐用这个,不是mysql-connector-java) - 可选:
lombok简化实体类,pagehelper-spring-boot-starter做分页
版本建议显式声明,例如 2.3.2 或 3.0.3(适配 Spring Boot 3.x),避免依赖管理自动选错。
2. 配置数据源和 MyBatis 参数
在 application.yml 里写清楚:
-
spring.datasource.url、username、password、driver-class-name(MySQL 8+ 用com.mysql.cj.jdbc.Driver) -
mybatis.mapper-locations:指定 XML 文件路径,如classpath:mapper/*.xml(用注解可省略) -
mybatis.type-aliases-package:设实体类包名,XML 中写User就行,不用全限定名 -
mybatis.configuration.map-underscore-to-camel-case=true:开启下划线转驼峰,字段user_name自动映射到userName
3. 编写 Mapper 接口与使用方式
有两种主流写法,按需选择:
-
纯注解方式:在接口方法上用
@Select、@Update等,适合简单 SQL;复杂动态逻辑可搭配@SelectProvider -
XML 方式:接口定义方法,同名 XML 文件写 SQL,支持
<if></if>、<foreach></foreach>等动态标签,适合多表关联、条件组合等场景
Mapper 接口无需实现类,Spring Boot 启动时会基于 JDK 动态代理生成实现。只需确保接口被扫描到——要么在启动类加 @MapperScan("com.example.mapper"),要么每个接口加 @Mapper 注解。
4. 补充建议:日志与排错
开发阶段建议打开 MyBatis SQL 日志,方便确认执行语句是否符合预期:
- 在
application.yml加:logging.level.com.example.mapper=DEBUG(把com.example.mapper换成你 Mapper 接口所在包) - 这样控制台会打印预编译 SQL、实际参数值,比猜更可靠
- 如果报
Invalid bound statement,先检查 XML 文件是否在 classpath 下、namespace 是否和接口全类名一致、SQL id 是否匹配方法名











