SpringBoot2中使用MyBatis

在 Spring Boot 2 中使用 MyBatis 是一个相对简单的过程。MyBatis 是一个持久层框架,它使 Java 对象与 SQL 数据库之间的映射变得简单。以下是如何在 Spring Boot 2 中集成 MyBatis 的详细步骤,包括示例代码。

1. 建立 Spring Boot 项目

您可以使用 Spring Initializr 创建一个新的 Spring Boot 项目,选择的依赖项包括:

  • Spring Web
  • MyBatis Framework
  • MySQL Driver(或您使用的任何数据库驱动)

2. 添加 Maven 依赖

在您的 pom.xml 中添加以下依赖项:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</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>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>

确保您使用的 MyBatis 版本与您的 Spring Boot 版本兼容。

3. 配置数据源

src/main/resources/application.properties 中配置数据库连接信息:

1
2
3
4
5
6
7
8
9
# 数据源配置
spring.datasource.url=jdbc:mysql://localhost:3306/your_database?useSSL=false&serverTimezone=UTC
spring.datasource.username=your_username
spring.datasource.password=your_password
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

# MyBatis 配置
mybatis.mapper-locations=classpath:mapper/*.xml
mybatis.type-aliases-package=com.example.demo.model

替换 your_databaseyour_usernameyour_password 为您的数据库信息。

4. 创建数据库表

假设我们有一个简单的用户表,您可以通过以下 SQL 语句创建数据库表:

1
2
3
4
5
CREATE TABLE users (
id BIGINT AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(100) NOT NULL,
password VARCHAR(100) NOT NULL
);

5. 创建实体类

src/main/java/com/example/demo/model 目录下创建 User 实体类:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
package com.example.demo.model;

public class User {
private Long id;
private String username;
private String password;

// Getters 和 Setters
public Long getId() {
return id;
}

public void setId(Long id) {
this.id = id;
}

public String getUsername() {
return username;
}

public void setUsername(String username) {
this.username = username;
}

public String getPassword() {
return password;
}

public void setPassword(String password) {
this.password = password;
}
}

6. 创建 Mapper 接口

src/main/java/com/example/demo/mapper 目录下创建 UserMapper 接口:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
package com.example.demo.mapper;

import com.example.demo.model.User;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;

import java.util.List;

@Mapper
public interface UserMapper {
@Select("SELECT * FROM users")
List<User> findAll();

@Select("SELECT * FROM users WHERE id = #{id}")
User findById(Long id);
}

7. 创建 Service 类

src/main/java/com/example/demo/service 目录下创建 UserService 类:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
package com.example.demo.service;

import com.example.demo.mapper.UserMapper;
import com.example.demo.model.User;
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 List<User> getAllUsers() {
return userMapper.findAll();
}

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

8. 创建 Controller 类

src/main/java/com/example/demo/controller 目录下创建 UserController 类:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
package com.example.demo.controller;

import com.example.demo.model.User;
import com.example.demo.service.UserService;
import org.springframework.web.bind.annotation.*;

import java.util.List;

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

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

@GetMapping
public List<User> getAllUsers() {
return userService.getAllUsers();
}

@GetMapping("/{id}")
public User getUserById(@PathVariable Long id) {
return userService.getUserById(id);
}
}

9. 运行应用

确保数据库已启动并且配置正确,您可以通过以下命令运行应用:

1
mvn spring-boot:run

10. 测试 API

您可以使用 Postman 或浏览器访问以下 URL 来测试 API:

  • 获取所有用户:GET http://localhost:8080/users
  • 根据 ID 获取用户:GET http://localhost:8080/users/{id}

11. 使用 XML 映射文件(可选)

如果您更喜欢使用 XML 文件来定义 SQL 映射,您可以在 src/main/resources/mapper 目录下创建一个 UserMapper.xml 文件:

1
2
3
4
5
6
7
8
9
<mapper namespace="com.example.demo.mapper.UserMapper">
<select id="findAll" resultType="com.example.demo.model.User">
SELECT * FROM users
</select>

<select id="findById" parameterType="Long" resultType="com.example.demo.model.User">
SELECT * FROM users WHERE id = #{id}
</select>
</mapper>

然后,更新 UserMapper 接口:

1
2
3
4
5
6
7
8
9
10
11
12
package com.example.demo.mapper;

import com.example.demo.model.User;
import org.apache.ibatis.annotations.Mapper;

import java.util.List;

@Mapper
public interface UserMapper {
List<User> findAll();
User findById(Long id);
}