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

yizhihongxing

下面是 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日

相关文章

  • Spring Boot使用Schedule实现定时任务的方法

    下面是详细的“Spring Boot使用Schedule实现定时任务的方法”的攻略: 一、概述 在Spring Boot中,我们可以使用Spring Scheduler实现简单的定时任务。Spring Scheduler是Spring框架中的一个轻量级、基于内存的定时任务框架,可以方便地实现定时任务。在本文中,我们将详细介绍如何在Spring Boot中使用…

    Java 2023年5月20日
    00
  • spring-boot使用AOP统一处理日志

    下面是详细讲解“spring-boot使用AOP统一处理日志”的完整攻略。 什么是AOP? AOP(Aspect Oriented Programming),中文翻译为面向切面编程,它允许我们通过预编译方式和运行期动态代理实现程序功能的统一维护。 AOP常见的应用场景 AOP的应用场景非常多,最常见的包括:日志记录、权限控制、事务管理、性能统计、异常处理等。…

    Java 2023年5月15日
    00
  • Maven添加Tomcat插件实现热部署代码实例

    下面是Maven添加Tomcat插件实现热部署代码实例的完整攻略: 1. 前置条件 在开始之前,请确保你已经完成以下准备工作: 安装了Maven和Tomcat; 确认已经成功启动Tomcat服务器。 2. 添加Tomcat插件 在Maven的pom.xml文件中,添加以下配置,以添加Tomcat插件: <build> <plugins&gt…

    Java 2023年5月19日
    00
  • Java执行shell命令的实现

    Java可以通过运行shell命令来与操作系统进行交互,可以使用以下三种方式来执行shell命令: Runtime类 ProcessBuilder类 Process类 Runtime类 Java中有一个常量对象Runtime代表着当前Java应用程序的运行环境,可以使用Runtime类中的exec()方法在程序中执行shell命令。 import java.…

    Java 2023年5月26日
    00
  • Java 数组内置函数toArray详解

    Java 数组内置函数 toArray 详解 toArray() 是 Java 数组的内置函数之一。它可以将一个数组转换成一个目标类型的数组。在这篇文章中,我们将探讨 toArray() 函数的使用以及一些示例。 toArray() 函数的使用 toArray() 函数的基本形式如下: public <T> T[] toArray(T[] a) …

    Java 2023年5月26日
    00
  • Java实现文件读取和写入过程解析

    Java实现文件读取和写入过程解析 在Java中,读取和写入文件是非常常见的操作,本文将详细介绍Java实现文件读取和写入的过程,并提供两个示例进行演示。 文件读取 文件读取可以使用Java标准库中提供的java.io包中的FileReader和BufferedReader类实现。 FileReader类用于读取字符文件,BufferedReader类可以优…

    Java 2023年5月20日
    00
  • Apache Shiro 使用手册(三) Shiro授权

    Shiro授权是一个非常重要的部分,它定义了谁可以访问应用程序中的哪些资源。本文将介绍如何使用Shiro进行授权。 什么是Shiro授权? Shiro授权是指确定哪些用户可以访问应用程序中的哪些资源。一般来说,授权是在通过身份验证后给定的,如果身份验证已经将用户与特定角色相关联,则可以使用角色来进行授权。此外,还可以使用基于权限的授权方式。 Shiro授权处…

    Java 2023年6月15日
    00
  • Java Mybatis框架由浅入深全解析上篇

    Java Mybatis框架由浅入深全解析上篇 介绍 Java Mybatis框架是一个基于Java语言的数据映射框架,它是一种半自动化的ORM框架,通过XML配置文件或注解的方式将Java对象与数据库进行映射。 Mybatis的基本结构 Mybatis的基本结构包括四个部分: Configuration(配置类):读取mybatis配置文件中的信息,生成全…

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