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 进行数据库操作了。

相关推荐
LUCIAZZZ11 小时前
JVM之虚拟机运行
java·jvm·spring·操作系统·springboot
堕落年代11 小时前
SpringSecurity当中的CSRF防范详解
前端·springboot·csrf
一零贰肆13 小时前
深入理解SpringBoot中的SpringCache缓存技术
java·springboot·springcache·缓存技术
Allen Bright16 小时前
【MyBatis-9】MyBatis分页插件PageHelper深度解析与实践指南
mybatis
柴薪之王、睥睨众生1 天前
(自用)Java学习-5.8(总结,springboot)
java·开发语言·spring boot·学习·mybatis
唐僧洗头爱飘柔95271 天前
【SSM-SSM整合】将Spring、SpringMVC、Mybatis三者进行整合;本文阐述了几个核心原理知识点,附带对应的源码以及描述解析
java·spring·mybatis·springmvc·动态代理·ioc容器·视图控制器
意倾城2 天前
浅说MyBatis-Plus 的 saveBatch 方法
java·mybatis
Brilliant Nemo2 天前
五、框架实战:SSM整合原理和实战
maven·mybatis
小赵面校招2 天前
Spring Boot整合MyBatis全攻略:原理剖析与最佳实践
java·spring boot·mybatis
小赵面校招2 天前
SpringBoot整合MyBatis-Plus:零XML实现高效CRUD
xml·spring boot·mybatis