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

相关推荐
@yanyu6666 小时前
登录注册功能-明文
vue.js·springboot
misL NITL7 小时前
idea、mybatis报错Property ‘sqlSessionFactory‘ or ‘sqlSessionTemplate‘ are required
tomcat·intellij-idea·mybatis
是宇写的啊15 小时前
MyBatis-Plus
java·开发语言·mybatis
工作log2 天前
Spring Boot 3.5 + MyBatis Plus + RabbitMQ:打造 AI 驱动的慢 SQL 监控与优化系统
spring boot·mybatis·java-rabbitmq
河阿里2 天前
MyBatis-Plus:MyBatis的进阶开发
数据库·mybatis
苏渡苇2 天前
DeepSeek V4 实战:自然语言生成 SQL + 智能优化引擎
ai·springboot·spring ai·deepseek·ai推理·deepseek v4·自然语言生成sql
橙子圆1232 天前
Mybatis之动态sql
sql·tomcat·mybatis
玛卡巴卡ldf2 天前
【Springboot升级AI】(大模型部署)LangChain4j、会话记忆、隔离消失持久化问题、ollama、RAG知识库、Tools工具
java·开发语言·人工智能·spring boot·后端·springboot
Nick_zcy2 天前
小说在线阅读网站和小说管理系统 · 功能全解析
java·后端·python·springboot·ruoyi
冷小鱼3 天前
MyBatis 与 MyBatis-Plus:从入门到精通的完整指南
java·tomcat·mybatis