SpringBoot整合mybatis/mybatis-plus实现数据持久化的操作

下面是 SpringBoot 整合 MyBatis/MyBatis-Plus 实现数据持久化的操作攻略:

环境准备

  • SpringBoot 2.x
  • MyBatis/MyBatis-Plus
  • MySQL 数据库
  • Maven

依赖配置

首先需要在 pom.xml 文件中配置 MyBatis/MyBatis-Plus 以及 MySQL 数据库依赖:

<dependencies>
    <!-- SpringBoot 依赖 -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

    <!-- MyBatis/MyBatis-Plus 依赖 -->
    <dependency>
        <groupId>org.mybatis.spring.boot</groupId>
        <artifactId>mybatis-spring-boot-starter</artifactId>
        <version>2.1.4</version>
    </dependency>
    <dependency>
        <groupId>com.baomidou</groupId>
        <artifactId>mybatis-plus-boot-starter</artifactId>
        <version>3.4.0</version>
    </dependency>

    <!-- MySQL 数据库依赖 -->
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>8.0.26</version>
    </dependency>
</dependencies>

数据库配置

在 application.yml 文件中配置 MySQL 数据库连接信息:

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

MyBatis/MyBatis-Plus 配置

MyBatis 配置

创建 MyBatis 配置文件 mybatis-config.xml,文件内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "https://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
    <settings>
        <setting name="cacheEnabled" value="true"/>
    </settings>
</configuration>

MyBatis-Plus 配置

创建 MyBatis-Plus 配置文件 mybatis-plus-config.xml,文件内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "https://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
    <settings>
        <setting name="logImpl" value="stdout_log4j2"/>
    </settings>
</configuration>

实现 CRUD

创建实体类

创建实体类 User,表示用户信息,代码如下:

@Data
@EqualsAndHashCode(callSuper = false)
public class User implements Serializable {

    private static final long serialVersionUID = 1L;

    @TableId(type = IdType.AUTO)
    private Long id;

    private String name;

    private String email;

    private Integer age;

    private LocalDateTime createTime;

    private LocalDateTime updateTime;
}

其中,@Data 注解是 Lombok 提供的,可以自动生成 getter/setter、equals、hashCode 和 toString 方法。

@EqualsAndHashCode(callSuper = false) 注解是 Lombok 提供的,表示不生成 equals 和 hashCode 方法。

@TableId 注解是 MyBatis-Plus 提供的,用于声明 ID 字段,type 属性用于指定ID生成策略,这里使用的是自增长。

创建 Mapper 接口

创建 Mapper 接口 UserMapper,用于定义对 User 数据表的操作,代码如下:

@Mapper
public interface UserMapper extends BaseMapper<User> {
}

其中,@Mapper 注解表示该接口是 Mapper 接口,需要被扫描到。

BaseMapper 是 MyBatis-Plus 提供的一个通用 Mapper,已经封装了常用的 DAO 操作方法,如插入、修改、删除和查询等。因此,只需要继承该接口即可。

编写 CRUD 方法

创建 UserService 类,用于实现对 User 数据库表的 CRUD,代码如下:

@Service
public class UserService {

    @Autowired
    private UserMapper userMapper;

    public void save(User user){
        userMapper.insert(user);
    }

    public void update(User user){
        userMapper.updateById(user);
    }

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

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

    public List<User> getAll(){
        return userMapper.selectList(null);
    }
}

其中,@Service 注解表示该类是 Service 类。

@Autowired 注解是 Spring 自带的,用于自动装配 UserMapper 接口实例对象。

save 方法用于保存用户信息。

update 方法用于更新用户信息。

deleteById 方法用于根据 ID 删除用户信息。

getById 方法用于根据 ID 查询用户信息。

getAll 方法用于查询所有用户信息。

示例

示例1:插入用户信息

创建 RESTful API 接口 UserApi,用于向数据库插入用户信息,代码如下:

@RestController
@RequestMapping("/user")
public class UserApi {

    @Autowired
    private UserService userService;

    @PostMapping("")
    public String save(User user){
        userService.save(user);
        return "success";
    }
}

其中,@RestController 注解表示该类是一个 RESTful API 类。

@RequestMapping("/user") 表示该类处理的请求映射路径为 /user。

@Autowired 注解是 Spring 自带的,用于自动装配 UserService 实例对象。

@PostMapping("") 表示处理 POST 请求,"" 为空URL表示接收所有的url,即 /user

User 类通过 @RequestBody 注解绑定 HTTP 请求体到自定义类型 user 对象上。

使用 Postman 工具向 /user 接口发送 POST 请求,请求体为 JSON 字符串格式的用户信息。

返回 success 表示插入成功。

示例2:查询所有用户信息

继续创建 RESTful API 接口 UserApi,用于查询数据库中所有的用户信息,代码如下:

@RestController
@RequestMapping("/user")
public class UserApi {

    @Autowired
    private UserService userService;

    @GetMapping("")
    public List<User> getAll(){
        return userService.getAll();
    }
}

其中,@RestController、@RequestMapping("/user")、@Autowired 三个注解含义同示例1,不再赘述。

@GetMapping("") 表示处理 GET 请求,"" 为空 URL,表示查询所有用户信息。

使用 Postman 工具向 /user 接口发送 GET 请求,返回 JSON 格式的所有用户信息。

至此,我们就完成了 SpringBoot 整合 MyBatis/MyBatis-Plus 实现数据持久化的操作,其中包含了插入用户信息和查询所有用户信息两个示例。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:SpringBoot整合mybatis/mybatis-plus实现数据持久化的操作 - Python技术站

(0)
上一篇 2023年5月20日
下一篇 2023年5月20日

相关文章

  • java多线程Synchronized实现可见性原理解析

    Java多线程Synchronized实现可见性原理解析 介绍 在Java多线程编程中,解决线程间数据不可见的一种方式是使用Synchronized同步关键字,本文将详细介绍Synchronized如何实现多线程可见性。 可见性问题 当多个线程同时对同一个变量进行读写操作时,由于线程之间的操作是异步的,可能会出现数据不一致的情况。例如,线程1读取了变量的旧值…

    Java 2023年5月19日
    00
  • Java Scanner用法案例详解

    Java Scanner用法案例详解 什么是Scanner类 Scanner类是一个标准的Java类,位于java.util包中。它提供了一种方便而且简单的方式用于读取用户输入的数据,例如,从键盘上读取数据。 Scanner类构造方法 Scanner类有以下几种构造方法: Scanner(File source):用于读取文件。 Scanner(InputS…

    Java 2023年5月26日
    00
  • Java中输入输出方式的简单示例

    Java 是一门广泛应用于开发各种类型应用程序的语言,输入输出是 Java 的重要部分。在 Java 中,有多种输入输出方式,常用的有标准输入、文件输入输出、网络输入输出、控制台输入输出等等。下面就对这些输入输出方式进行一个简单的示例介绍。 标准输入输出示例 在 Java 中,标准输入输出是最简单的一种输入输出方式。标准输出可以用 System.out.pr…

    Java 2023年5月19日
    00
  • 详解Spring 两种注入的方式(Set和构造)实例

    下面我将详细讲解“详解Spring 两种注入的方式(Set和构造)实例”的完整攻略。 介绍 在Spring框架中,我们可以使用两种方式来进行对象之间的注入:Set注入和构造注入。这两种方式各有优缺点,本文将通过实例详细讲解它们的用法。 Set注入 Set注入,顾名思义,就是通过set方法对属性进行注入。具体操作步骤如下: 步骤一:定义接口 public in…

    Java 2023年5月20日
    00
  • java CompletableFuture实现异步编排详解

    Java CompletableFuture实现异步编排详解 Java中Future,CompletableFuture这两个类非常强大,可以帮助我们完成异步编程。在这里,我们将介绍如何使用Java的CompletableFuture类来实现异步编排的详细攻略。 CompletableFuture的介绍 CompletableFuture是Java 8中新增…

    Java 2023年5月26日
    00
  • 一文读懂Spring Bean的生命周期

    一文读懂Spring Bean的生命周期 Spring是一款非常流行的Java开发框架,支持面向对象编程、IOC和AOP等高级特性,而Spring Bean是其最基本的组成部分。本文将通过详细讲解Spring Bean的生命周期来帮助读者深入理解Spring框架的工作原理。 什么是Spring Bean? Spring Bean是Spring IoC容器中管…

    Java 2023年5月19日
    00
  • JNI实现最简单的JAVA调用C/C++代码

    下面是“JNI实现最简单的JAVA调用C/C++代码”的完整攻略: 1. JNI是什么? JNI(Java Native Interface)是Java提供的一种机制,使得Java程序可以调用本地(native)代码,也就是C/C++代码。 2. JNI实现步骤 为了实现Java程序调用C/C++代码,我们需要完成以下步骤: 2.1. 编写C/C++代码 我…

    Java 2023年5月23日
    00
  • Java8加java10等于Java18的版本查看及特性详解

    Java8加Java10等于Java18的版本查看及特性详解 在本篇攻略中,我们会讲解如何通过一些简单的命令来查看Java版本,并介绍一些Java8和Java10的重要特性。同时,我们还会提到Java18这一版本是否真实存在的问题。 1. 查看Java版本 1.1 使用java -version命令 在命令行中键入java -version命令,可查看当前系…

    Java 2023年5月19日
    00
合作推广
合作推广
分享本页
返回顶部