Skip to content

Spring Boot整合MyBatis

Spring Boot 整合 MyBatis 是一个非常常见的需求,特别是在构建基于 Java 的 RESTful API 或微服务时。

步骤1:添加依赖

首先,你需要在你的 pom.xml 文件中添加 Spring Boot 和 MyBatis 的相关依赖。以下是一些基本的依赖项:

xml
<dependencies>
    <!-- Spring Boot Starter Web -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

    <!-- Spring Boot Starter Data MyBatis -->
    <dependency>
        <groupId>org.mybatis.spring.boot</groupId>
        <artifactId>mybatis-spring-boot-starter</artifactId>
        <version>2.2.0</version> <!-- 根据需要选择版本 -->
    </dependency>

    <!-- MySQL Driver -->
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <scope>runtime</scope>
    </dependency>

    <!-- H2 Database for testing -->
    <dependency>
        <groupId>com.h2database</groupId>
        <artifactId>h2</artifactId>
        <scope>test</scope>
    </dependency>
</dependencies>

步骤2:配置数据库连接

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

properties
spring.datasource.url=jdbc:mysql://localhost:3306/your_database_name?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC
spring.datasource.username=your_username
spring.datasource.password=your_password
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

# MyBatis configuration
mybatis.type-aliases-package=com.yourproject.models
mybatis.mapper-locations=classpath:mapper/*.xml

步骤3:创建实体类和Mapper接口

根据你的数据库表结构创建相应的实体类和 Mapper 接口。例如:

java
// User.java (Entity)
public class User {
    private int id;
    private String name;
    // Getters and Setters
}

// UserMapper.java (Mapper Interface)
@Mapper
public interface UserMapper {
    @Select("SELECT * FROM users WHERE id = #{id}")
    User getUserById(int id);
}

步骤4:编写Service和Controller

创建 Service 类来处理业务逻辑,并使用 Controller 来处理 HTTP 请求:

java
// UserService.java
@Service
public class UserService {
    private final UserMapper userMapper;

    public UserService(UserMapper userMapper) {
        this.userMapper = userMapper;
    }

    public User getUserById(int id) {
        return userMapper.getUserById(id);
    }
}

// UserController.java
@RestController
@RequestMapping("/users")
public class UserController {
    private final UserService userService;

    public UserController(UserService userService) {
        this.userService = userService;
    }

    @GetMapping("/{id}")
    public ResponseEntity<User> getUserById(@PathVariable int id) {
        User user = userService.getUserById(id);
        if (user != null) {
            return ResponseEntity.ok(user);
        } else {
            return ResponseEntity.notFound().build();
        }
    }
}