主题
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.properties
或 application.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();
}
}
}