SpringBoot整合MyBatis

Spring Boot 整合 MyBatis 教程

本教程将详细介绍如何在 Spring Boot 项目中整合 MyBatis 框架。你将学习如何配置 MyBatis,创建数据访问层(DAO),并编写测试数据进行验证。

准备工作

在开始之前,请确保已完成以下准备工作:

  • 安装 Java JDK 和 Maven
  • 创建一个 Spring Boot 项目
  • 导入相关依赖

步骤 1: 导入 MyBatis 依赖

在你的 Spring Boot 项目的 pom.xml 文件中,添加以下依赖:

xml 复制代码
<dependencies>
    <!-- Spring Boot Starter -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter</artifactId>
    </dependency>
    
    <!-- MyBatis Starter -->
    <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>
    </dependency>
    
    <!-- 其他依赖... -->
</dependencies>

步骤 2: 配置数据源和 MyBatis

application.propertiesapplication.yml 文件中,配置数据库连接和 MyBatis 相关属性:

yaml 复制代码
# 数据源配置
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

步骤 3: 创建数据访问层(DAO)

创建一个接口,用于定义数据访问方法。例如,创建一个 UserMapper 接口:

java 复制代码
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);
}

步骤 4: 创建数据模型

创建一个数据模型类,用于映射数据库表和 Java 对象。例如,创建一个 User 类:

java 复制代码
public class User {
    private Long id;
    private String name;
    private int age;
    // 其他属性、构造函数、getter 和 setter 方法...
}

步骤 5: 创建 Mapper XML 文件

resources 目录下创建一个 mapper 目录,并创建一个与接口对应的 Mapper XML 文件,例如 UserMapper.xml。在该文件中定义 SQL 语句和映射规则:

xml 复制代码
<?xml version="1.0" encoding="UTF-8" ?>
<!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>

步骤 6: 编写测试数据

编写一个测试类,用于测试数据访问层的方法。例如,创建一个 UserMapperTest 类:

java 复制代码
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.");
    }
}

步骤 7: 运行测试

运行测试类,验证数据访问层的方法是否正常工作。你应该能够看到数据库中的数据和相应的操作结果。

恭喜!!!

你已成功完成了 Spring Boot 整合 MyBatis 的教程。现在你可以在 Spring Boot 项目中使用 MyBatis 进行数据库操作了。

相关推荐
jokerest12313 小时前
web——sqliabs靶场——第十三关——报错注入+布尔盲注
mybatis
武子康13 小时前
Java-06 深入浅出 MyBatis - 一对一模型 SqlMapConfig 与 Mapper 详细讲解测试
java·开发语言·数据仓库·sql·mybatis·springboot·springcloud
WindFutrue16 小时前
使用Mybatis向Mysql中的插入Point类型的数据全方位解析
数据库·mysql·mybatis
AiFlutter17 小时前
Java实现简单的搜索引擎
java·搜索引擎·mybatis
天天扭码20 小时前
五天SpringCloud计划——DAY1之mybatis-plus的使用
java·spring cloud·mybatis
初晴~1 天前
【Spring】RESTful设计风格
java·后端·spring·springboot·restful
阑梦清川2 天前
SpringMVC案例学习(二)--表白墙/图书管理系统1.0版本
spring·mvc·springboot·案例
武子康2 天前
Java-05 深入浅出 MyBatis - 配置深入 动态 SQL 参数、循环、片段
java·sql·设计模式·架构·mybatis·代理模式
2的n次方_2 天前
MyBatis——#{} 和 ${} 的区别和动态 SQL
数据库·sql·mybatis