目录
- Spring Boot 集成 MyBATis 全攻略
- 1. 为什么选择 MyBatis
- 2. 基础环境
- 依赖(pom.XML)
- 3. 配置数据源
- application.yml
- 4. 定义实体类
- 5. 定义 Mapper 接口
- 6. 使用 XML 配置 SQL(适合复杂 SQL)
- 7. Service + Controller
- Service
- Controller
- 8. 分页支持
- 9. 常见优化
- 10. 总结
Spring Boot 集成 MyBatis 全攻略
1. 为什么选择 MyBatis
- ORM 灵活性:相比 Hibernate,MyBatis 更灵活,SQL 可控,性能优化空间大。
- 学习曲线低:对于熟悉 SQL 的开发者,上手快。
- 与 Spring Boot 无缝整合:只需少量配置,即可快速使用。
2. 基础环境
依赖(pom.xml)
<dependencies> <!-- Spring Boot Web --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <!-- MyBatis-Spring-Boot-Starter --> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>3.0.3</version> </dependency> <!-- 数据库驱动 --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-j</artifactId> <scope>runtime</scope> </dependency> <!-- Lombok(可选) --> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional> </dependency> </dependencies>
3. 配置数据源
application.yml
spring: datasource: url: jdbc:mysql://localhost:3306/demo_db?useSSL=false&serverTimezone=Asia/Shanghai username: root password: root123 driver-class-name: com.mysql.cj.jdbc.Driver mybatis: # 指定 Mapper XML 文件位置 mapper-locations: classpath:mapper/*.xml # 指定实体类包,自动映射列名和属性名(开启驼峰命名) type-aliases-package: com.example.demo.entity configuration: map-underscore-to-camel-case: true
4. 定义实体类
package com.example.demo.entity; import lombok.Data; @Data public class User { private Long id; private String username; private String email; }
5. 定义 Mapper 接口
package com.example.demo.mapper; import com.example.demo.entity.User; import org.apache.ibatis.annotations.*; import Java.util.List; @Mapper public interface UserMapper { @Select("SELECT * FROM user WHERE id = #{id}") User findById(Long id); @Select("SELECT * FROM user") List<User> findAll(); @Insert("INSERT INTO user(username, email) VALUES(#{编程客栈username}, #{email})") @Options(useGeneratedKeys = true, keyProperty = "id") int insert(User user); @Update("UPDATE user SET username=#{username}, email=#{email} WHERE id=#{id}") int update(User user); @Delete("DELETE FROM user WHERE id=#{id}") int delete(Long id); }
✅ 这里用注解方式,简单清晰;复杂 SQL 可以写到 XML 文件。
6. 使用 XML 配置 SQL(适合复杂 SQL)
在 编程客栈resources/mapper/UserMapper.xml
中:php
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.example.demo.mapper.UserMapper"> <select id="findAll" resultType="com.example.demo.entity.User"> SELECT * FROM user </select> <insert id="insert" parameterType="com.example.demo.entity.User" useGeneratedKeys="true" keyProperty="id"> INSERT INTO user(username, email) VALUES(#{username}, #{email}) </insert> </mapper>
7. Service + Controller
Service
package com.example.demo.service; import com.example.demo.entity.Userandroid; import com.example.demo.mapper.UserMapper; import org.springframework.stereotype.Service; import java.util.List; @Service public class UserService { private final UserMapper userMapper; public UserService(UserMapper userMapper) { this.userMapper = userMapper; } public User getUser(Long id) { return userMapper.findById(id); } public List<User> listUsers() { return userMapper.findAll(); } public int addUser(User user) { return userMapper.insert(user); } }
Controller
package com.example.demo.controller; import com.example.demo.entity.User; import com.example.demo.service.UserService; import org.springframework.web.bind.annotation.*; import java.util.List; @RestController @RequestMapping("/users") public class UserControllpythoner { private final UserService userService; public UserController(UserService userService) { this.userService = userService; } @GetMapping("/{id}") public User getUser(@PathVariable Long id) { return userService.getUser(id); } @GetMapping public List<User> listUsers() { return userService.listUsers(); } @PostMapping public String addUser(@RequestBody User user) { userService.addUser(user); return "User added successfully!"; } }
8. 分页支持
推荐集成 PageHelper 插件:
<dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper-spring-boot-starter</artifactId> <version>1.4.7</version> </dependency>
使用:
PageHelper.startPage(1, 10); List<User> users = userMapper.findAll(); PageInfo<User> pageInfo = new PageInfo<>(users);
9. 常见优化
- 批量插入:使用
foreach
标签。 - 动态 SQL:使用
<if>
<choose>
等标签构建灵活查询。 - 二级缓存:
<cache/>
配置 + Redis 集成。 - 多数据源:Spring Boot + MyBatis 支持动态数据源切换。
- 统一异常处理:结合
@ControllerAdvice
统一返回接口错误信息。
10. 总结
Spring Boot + MyBatis 集成流程大致分为:
- 加依赖 → 2. 配数据源 → 3. 写实体类 → 4. 写 Mapper(注解/XML) → 5. 写 Service/Controller → 6. 增强功能(分页、缓存、动态 SQL)。
这样,就能快速搭建一个 基于 Spring Boot + MyBatis 的全栈开发框架 。
到此这篇关于Spring Boot 集成 MyBatis 全攻略(最新整理)的文章就介绍到这了,更多相关Spring Boot 集成 MyBatis内容请搜索编程客栈(www.devze.com)以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程客栈(www.devze.com)!
精彩评论