本教程将详细介绍如何在 Spring Boot 项目中整合 MyBatis 框架。你将学习如何配置 MyBatis,创建数据访问层(DAO),并编写测试数据进行验证。
在开始之前,请确保已完成以下准备工作:
在你的 Spring Boot 项目的 pom.xml
文件中,添加以下依赖:
<dependencies>
<dependency>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starterartifactId>
dependency>
<dependency>
<groupId>org.mybatis.spring.bootgroupId>
<artifactId>mybatis-spring-boot-starterartifactId>
<version>2.2.0version>
dependency>
<dependency>
<groupId>mysqlgroupId>
<artifactId>mysql-connector-javaartifactId>
dependency>
dependencies>
在 application.properties
或 application.yml
文件中,配置数据库连接和 MyBatis 相关属性:
# 数据源配置
spring.datasource.url=jdbc:mysql://localhost:3306/mydatabase
spring.datasource.username=root
spring.datasource.password=your_password
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
# MyBatis 配置
mybatis.mapper-locations=classpath:mapper/*.xml
mybatis.type-aliases-package=com.example.model
创建一个接口,用于定义数据访问方法。例如,创建一个 UserMapper
接口:
import com.example.model.User;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
@Mapper
public interface UserMapper {
List<User> getAllUsers();
User getUserById(@Param("id") Long id);
void createUser(User user);
void updateUser(User user);
void deleteUser(@Param("id") Long id);
}
创建一个数据模型类,用于映射数据库表和 Java 对象。例如,创建一个 User
类:
public class User {
private Long id;
private String name;
private int age;
// 其他属性、构造函数、getter 和 setter 方法...
}
在 resources
目录下创建一个 mapper
目录,并创建一个与接口对应的 Mapper XML 文件,例如 UserMapper.xml
。在该文件中定义 SQL 语句和映射规则:
DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.example.mapper.UserMapper">
<resultMap id="UserResultMap" type="com.example.model.User">
<id property="id" column="id"/>
<result property="name" column="name"/>
<result property="age" column="age"/>
resultMap>
<select id="getAllUsers" resultMap="UserResultMap">
SELECT * FROM users
select>
<select id="getUserById" resultMap="UserResultMap">
SELECT * FROM users WHERE id = #{id}
select>
<insert id="createUser">
INSERT INTO users(name, age) VALUES (#{name}, #{age})
insert>
<update id="updateUser">
UPDATE users SET name = #{name}, age = #{age} WHERE id = #{id}
update>
<delete id="deleteUser">
DELETE FROM users WHERE id = #{id}
delete>
mapper>
编写一个测试类,用于测试数据访问层的方法。例如,创建一个 UserMapperTest
类:
import com.example.mapper.UserMapper;
import com.example.model.User;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import java.util.List;
@SpringBootTest
public class UserMapperTest {
@Autowired
private UserMapper userMapper;
@Test
public void testGetAllUsers() {
List<User> userList = userMapper.getAllUsers();
for (User user : userList) {
System.out.println(user);
}
}
@Test
public void testGetUserById() {
User user = userMapper.getUserById(1L);
System.out.println(user);
}
@Test
public void testCreateUser() {
User user = new User();
user.setName("John");
user.setAge(25);
userMapper.createUser(user);
System.out.println("User created successfully.");
}
@Test
public void testUpdateUser() {
User user = userMapper.getUserById(1L);
user.setName("Updated Name");
user.setAge(30);
userMapper.updateUser(user);
System.out.println("User updated successfully.");
}
@Test
public void testDeleteUser() {
userMapper.deleteUser(1L);
System.out.println("User deleted successfully.");
}
}
运行测试类,验证数据访问层的方法是否正常工作。你应该能够看到数据库中的数据和相应的操作结果。
恭喜!!!
你已成功完成了 Spring Boot 整合 MyBatis 的教程。现在你可以在 Spring Boot 项目中使用 MyBatis 进行数据库操作了。