Spring Boot整合MyBatis实战指南,C#多线程全家桶:从Thread到async/await。
·
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.properties 或 application.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:
- 在
resources目录下创建mapper/UserMapper.xml:
<mapper namespace="com.example.mapper.UserMapper">
<select id="findAll" resultType="com.example.entity.User">
SELECT * FROM users
</select>
</mapper>
- 在
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 整合,构建强大的数据库应用。
更多推荐
所有评论(0)