Spring Boot 整合 MyBatis 的完整指南

Spring Boot 是一种简化 Spring 应用开发的框架,MyBatis 是一个优秀的持久层框架,支持定制化 SQL。结合两者可以高效地完成数据库操作。

环境准备

确保项目中包含以下依赖:

  • Spring Boot Starter Web
  • MyBatis Spring Boot Starter
  • 数据库驱动(如 MySQL 或 PostgreSQL)
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
    <groupId>org.mybatis.spring.boot</groupId>
    <artifactId>mybatis-spring-boot-starter</artifactId>
    <version>2.2.0</version>
</dependency>
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <scope>runtime</scope>
</dependency>
配置数据源

application.propertiesapplication.yml 中配置数据库连接信息:

spring.datasource.url=jdbc:mysql://localhost:3306/your_database
spring.datasource.username=your_username
spring.datasource.password=your_password
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
创建实体类

定义一个与数据库表对应的实体类:

public class User {
    private Long id;
    private String name;
    private String email;
    // getters and setters
}
编写 Mapper 接口

使用 MyBatis 的注解或 XML 方式定义 SQL 操作:

@Mapper
public interface UserMapper {
    @Select("SELECT * FROM users WHERE id = #{id}")
    User findById(Long id);
    
    @Insert("INSERT INTO users(name, email) VALUES(#{name}, #{email})")
    void insert(User user);
}
创建 Service 层

通过 Service 层调用 Mapper:

@Service
public class UserService {
    private final UserMapper userMapper;
    
    public UserService(UserMapper userMapper) {
        this.userMapper = userMapper;
    }
    
    public User getUserById(Long id) {
        return userMapper.findById(id);
    }
    
    public void addUser(User user) {
        userMapper.insert(user);
    }
}
控制器层

通过 REST API 暴露服务:

@RestController
@RequestMapping("/api/users")
public class UserController {
    private final UserService userService;
    
    public UserController(UserService userService) {
        this.userService = userService;
    }
    
    @GetMapping("/{id}")
    public User getUser(@PathVariable Long id) {
        return userService.getUserById(id);
    }
    
    @PostMapping
    public void addUser(@RequestBody User user) {
        userService.addUser(user);
    }
}
运行与测试

启动 Spring Boot 应用,使用 Postman 或 curl 测试 API:

curl -X GET http://localhost:8080/api/users/1
curl -X POST -H "Content-Type: application/json" -d '{"name":"John", "email":"john@example.com"}' http://localhost:8080/api/users
高级配置

如果需要更复杂的 SQL 或动态查询,可以使用 XML 文件配置 Mapper:

  1. resources 目录下创建 mapper/UserMapper.xml
<mapper namespace="com.example.mapper.UserMapper">
    <select id="findAll" resultType="com.example.entity.User">
        SELECT * FROM users
    </select>
</mapper>
  1. application.properties 中指定 XML 路径:
mybatis.mapper-locations=classpath:mapper/*.xml
事务管理

Spring Boot 和 MyBatis 整合后,可以使用 @Transactional 注解管理事务:

@Service
public class UserService {
    @Transactional
    public void updateUser(User user) {
        // 数据库操作
    }
}
性能优化
  • 使用连接池(如 HikariCP)
  • 二级缓存配置
  • 批量操作优化

通过上述步骤,可以高效地将 Spring Boot 与 MyBatis 整合,构建强大的数据库应用。

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐