在现代 Java 开发中,Spring Boot 和 MyBatis 是两种非常流行的框架,二者的结合可以大大提高我们开发项目的效率和可维护性。本文将介绍如何将 Spring Boot 3 与 MyBatis 整合,并提供完整的代码示例。
1. 项目依赖
首先,我们需要创建一个 Spring Boot 项目。可以使用 Spring Initializr(https://start.spring.io/)来生成项目基础结构。在生成时,请选择以下依赖项:
- Spring Web
- MyBatis Framework
- MySQL Driver(或其他数据库驱动,根据您的需求)
生成后,您将得到一个包含 pom.xml
的 Maven 项目。在 pom.xml
中,确保添加 MyBatis 和数据库相关的依赖:
<dependencies>
<!-- Spring Boot Starter -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- MyBatis Spring Boot Starter -->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>3.0.4</version>
</dependency>
<!-- MySQL Driver -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.26</version>
</dependency>
<!-- Spring Boot Starter Test -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
2. 配置数据源
在 src/main/resources/application.yml
或 application.properties
中添加数据库连接信息。例如,使用 application.yml
:
spring:
datasource:
url: jdbc:mysql://localhost:3306/mydb
username: root
password: your_password
driver-class-name: com.mysql.cj.jdbc.Driver
mybatis:
mapper-locations: classpath*:mapper/**/*.xml
configuration:
map-underscore-to-camel-case: true
3. 创建实体类和Mapper接口
假设我们有一个简单的用户表 user
,其字段为 id
, name
, email
。
实体类
创建一个 User
实体类:
package com.example.demo.model;
public class User {
private Long id;
private String name;
private String email;
// Getters and Setters
}
Mapper接口
创建一个 Mapper 接口 UserMapper
:
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);
void insert(User user);
void update(User user);
void delete(Long id);
}
4. 创建Mapper XML文件
在 src/main/resources/mapper
下创建 UserMapper.xml
文件,并添加 SQL 语句:
<mapper namespace="com.example.demo.mapper.UserMapper">
<select id="findAll" resultType="com.example.demo.model.User">
SELECT * FROM user
</select>
<select id="findById" parameterType="long" resultType="com.example.demo.model.User">
SELECT * FROM user WHERE id = #{id}
</select>
<insert id="insert" parameterType="com.example.demo.model.User">
INSERT INTO user (name, email) VALUES (#{name}, #{email})
</insert>
<update id="update" parameterType="com.example.demo.model.User">
UPDATE user SET name = #{name}, email = #{email} WHERE id = #{id}
</update>
<delete id="delete" parameterType="long">
DELETE FROM user WHERE id = #{id}
</delete>
</mapper>
5. 创建服务和控制器
创建一个服务类 UserService
:
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> findAll() {
return userMapper.findAll();
}
public User findById(Long id) {
return userMapper.findById(id);
}
public void insert(User user) {
userMapper.insert(user);
}
public void update(User user) {
userMapper.update(user);
}
public void delete(Long id) {
userMapper.delete(id);
}
}
最后,创建一个控制器 UserController
:
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.findAll();
}
@GetMapping("/{id}")
public User getUserById(@PathVariable Long id) {
return userService.findById(id);
}
@PostMapping
public void createUser(@RequestBody User user) {
userService.insert(user);
}
@PutMapping
public void updateUser(@RequestBody User user) {
userService.update(user);
}
@DeleteMapping("/{id}")
public void deleteUser(@PathVariable Long id) {
userService.delete(id);
}
}
6. 运行项目
至此,Spring Boot 3 与 MyBatis 的整合已完成。运行应用程序后,您可以通过 GET /users
端口访问所有用户,POST /users
端口添加用户等。
总结来说,Spring Boot 3 和 MyBatis 的结合,不仅简化了配置过程,还使得数据访问变得更加便捷与高效。希望本文能够帮助到您在实际开发中有效使用这两个强大的框架。