Spring Boot 集成 MyBatis 的核心是“自动配置 + 约定优先”,无需手动创建 SqlSessionFactory 或管理 SqlSession,只需引入 mybatis-spring-boot-starter 和数据库驱动依赖,配置数据源与 mapper 路径,定义实体类和 Mapper 接口(支持注解或 XML),再通过 Service 和 Controller 完成调用链即可快速实现数据库操作。

Spring Boot 集成 MyBatis 的核心是“自动配置 + 约定优先”,不需要手动创建 SqlSessionFactory 或管理 SqlSession,框架会根据依赖和配置自动完成初始化。只要配对依赖、数据源和映射规则,几行代码就能跑通数据库操作。
引入关键依赖
在 pom.xml 中添加以下两项依赖即可启动集成:
- MyBatis Starter:提供自动配置能力,版本建议与 Spring Boot 主版本对齐(如 Spring Boot 3.x 推荐用 mybatis-spring-boot-starter 3.0+)
-
数据库驱动:MySQL 用
mysql-connector-j(8.0+ 推荐),PostgreSQL 用postgresql,H2 可用于本地快速测试
示例(Maven):
<dependency><br> <groupId>org.mybatis.spring.boot</groupId><br> <artifactId>mybatis-spring-boot-starter</artifactId><br> <version>3.0.3</version><br></dependency><br><dependency><br> <groupId>mysql</groupId><br> <artifactId>mysql-connector-j</artifactId><br> <scope>runtime</scope><br></dependency>
配置数据源和 MyBatis 行为
在 application.yml(或 .properties)中声明连接信息和基础映射路径:
立即学习“Java免费学习笔记(深入)”;
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
-
spring.datasource.url必须含数据库名、时区(如serverTimezone=Asia/Shanghai)、编码和 SSL 设置 -
mybatis.mapper-locations指向 XML 映射文件(如classpath:mapper/*.xml),若用注解方式可省略 -
mybatis.type-aliases-package可选,指定实体类包路径,避免 XML 中写全限定名
示例(YAML):
spring:<br> datasource:<br> url: jdbc:mysql://localhost:3306/demo?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai<br> username: root<br> password: 123456<br> driver-class-name: com.mysql.cj.jdbc.Driver<br>mybatis:<br> mapper-locations: classpath:mapper/*.xml<br> type-aliases-package: com.example.demo.entity
定义实体类和 Mapper 接口
实体类对应数据库表结构,推荐配合 Lombok 减少样板代码;Mapper 接口负责 SQL 声明,支持两种方式:
-
注解方式:适合简单 CRUD,直接在接口方法上加
@Select、@Insert等,无需 XML -
XML 方式:适合复杂 SQL、动态条件、多结果集等场景,XML 文件需放在
resources/mapper/下,且 namespace 必须为对应 Mapper 接口的全类名
注解示例:
@Mapper<br>public interface UserMapper {<br> @Select("SELECT * FROM user WHERE id = #{id}")<br> User selectById(Long id);<br><br> @Insert("INSERT INTO user (name, email) VALUES (#{name}, #{email})")<br> int insert(User user);<br>}接入 Service 和 Controller 完成调用链
Mapper 接口通过 @Autowired 注入到 Service 层,再由 Controller 调用,形成标准分层结构:
- Service 层封装业务逻辑,可加事务控制(
@Transactional) - Controller 层暴露 REST 接口,返回 JSON 数据
- 注意:Mapper 接口必须被 Spring 扫描到,可通过
@MapperScan("com.example.demo.mapper")在启动类上声明,或直接在接口上加@Mapper注解
这样一套流程下来,不写一行 XML 也能完成基础增删改查,真正实现快速搭建。

















