个人技术分享

目录

1. 添加依赖

2. 配置数据源和MyBatis

3. 创建实体类

4. Mapper 接口与映射文件

5. 编写服务层

6. 控制器


Spring Boot 整合 MyBatis 是一个相对直接的过程,主要涉及添加依赖、配置数据源、配置 MyBatis、创建实体类、Mapper 接口和映射文件、以及编写服务层来实现增删改查功能。

下面将一步步指导完成整个集成过程。

1. 添加依赖

pom.xml 文件中添加 Spring Boot Starter for MyBatis 的依赖,以及数据库驱动依赖(这里以 MySQL 为例):

<dependencies>
    <!-- Spring Boot Starter Web -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

    <!-- Spring Boot Starter Data JPA (For Database Connectivity, but we use MyBatis) -->
    <!-- 注意:此处添加JPA是为了演示Spring Boot的数据源配置,实际使用MyBatis时可以不加 -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>

    <!-- MyBatis Spring Boot Starter -->
    <dependency>
        <groupId>org.mybatis.spring.boot</groupId>
        <artifactId>mybatis-spring-boot-starter</artifactId>
        <version>2.3.0</version> <!-- 请检查最新版本 -->
    </dependency>

    <!-- MySQL Driver -->
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <scope>runtime</scope>
    </dependency>
</dependencies>

2. 配置数据源和MyBatis

application.propertiesapplication.yml 中配置数据库连接信息和MyBatis的相关设置:

spring.datasource.url=jdbc:mysql://localhost:3306/yourdb?useSSL=false&serverTimezone=UTC
spring.datasource.username=root
spring.datasource.password=password
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

mybatis.type-aliases-package=com.example.demo.entity
mybatis.mapper-locations=classpath:mapper/*.xml

3. 创建实体类

假设我们有一个用户表 users,对应的实体类 User.java 可能如下:

package com.example.demo.entity;

public class User {
    private Long id;
    private String name;
    private String email;

    // Getter and Setter methods...
}

4. Mapper 接口与映射文件

创建一个 Mapper 接口 UserMapper.java 和对应的 XML 映射文件 UserMapper.xml

UserMapper.java

package com.example.demo.mapper;

import com.example.demo.entity.User;
import org.apache.ibatis.annotations.Mapper;

@Mapper
public interface UserMapper {
    User findById(Long id);
    void insertUser(User user);
    void updateUser(User user);
    void deleteUser(Long id);
}

UserMapper.xml (位于 resources/mapper 目录下)

<?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.demo.mapper.UserMapper">
    <resultMap id="UserResultMap" type="com.example.demo.entity.User">
        <id property="id" column="id"/>
        <result property="name" column="name"/>
        <result property="email" column="email"/>
    </resultMap>

    <select id="findById" resultMap="UserResultMap">
        SELECT * FROM users WHERE id = #{id}
    </select>

    <insert id="insertUser">
        INSERT INTO users(name, email) VALUES(#{name}, #{email})
    </insert>

    <update id="updateUser">
        UPDATE users SET name=#{name}, email=#{email} WHERE id=#{id}
    </update>

    <delete id="deleteUser">
        DELETE FROM users WHERE id=#{id}
    </delete>
</mapper>

5. 编写服务层

创建一个 UserService 类来调用 Mapper 接口实现增删改查操作。

package com.example.demo.service;

import com.example.demo.entity.User;
import com.example.demo.mapper.UserMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
public class UserService {
    @Autowired
    private UserMapper userMapper;

    public User findById(Long id) {
        return userMapper.findById(id);
    }

    public void insertUser(User user) {
        userMapper.insertUser(user);
    }

    public void updateUser(User user) {
        userMapper.updateUser(user);
    }

    public void deleteUser(Long id) {
        userMapper.deleteUser(id);
    }
}

6. 控制器

最后,创建一个 UserController 来处理 HTTP 请求,调用 UserService 完成业务逻辑。

package com.example.demo.controller;

import com.example.demo.entity.User;
import com.example.demo.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

@RestController
@RequestMapping("/users")
public class UserController {
    @Autowired
    private UserService userService;

    @GetMapping("/{id}")
    public User getUser(@PathVariable Long id) {
        return userService.findById(id);
    }

    @PostMapping
    public void addUser(@RequestBody User user) {
        userService.insertUser(user);
    }

    @PutMapping
    public void updateUser(@RequestBody User user) {
        userService.updateUser(user);
    }

    @DeleteMapping("/{id}")
    public void deleteUser(@PathVariable Long id) {
        userService.deleteUser(id);
    }
}

至此,Spring Boot 整合 MyBatis 实现基本的增删改查功能就完成了。

你可以启动应用并使用 Postman 或类似工具测试这些 API。

记得先确保你的数据库连接信息正确,并且已创建相应的表结构。