springboot2.3 整合mybatis-plus 高级功能(图文详解)

yizhihongxing

Spring Boot 2.3 整合 Mybatis-Plus 高级功能

介绍

MyBatis-Plus 是一个 MyBatis 的增强工具,提供了许多实用且方便的功能,比如逆向工程、分页插件、自动填充等等。Spring Boot 2.3 是 Spring 家族中的一员,它提供了快捷而方便的开发方式。

本文将会讲解如何在 Spring Boot 2.3 中整合 Mybatis-Plus,以及如何使用 Mybatis-Plus 中的高级功能,例如分页插件和自动填充。

前置知识

在开始之前,我们先回顾一下一些必要的知识:

  • Spring Boot:快速构建 Spring 应用的一款框架。
  • MyBatis:一个优秀的持久层框架,支持自定义 SQL、存储过程等。
  • MyBatis-Plus:一个 MyBatis 的增强工具,提供了很多优秀实用的功能。

准备工作

我们需要准备以下环境:

  • JDK 8 或以上
  • Maven 3.0 或以上

项目搭建

首先,我们创建一个 Spring Boot 的项目。这里我们使用 Maven 构建。

在 pom.xml 中添加以下依赖:

<dependencies>
  <!-- Spring Boot 依赖 -->
  <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-web</artifactId>
  </dependency>
  <!-- MyBatis 依赖 -->
  <dependency>
      <groupId>org.mybatis.spring.boot</groupId>
      <artifactId>mybatis-spring-boot-starter</artifactId>
      <version>2.1.3</version>
  </dependency>
  <!-- MyBatis-Plus 依赖 -->
  <dependency>
      <groupId>com.baomidou</groupId>
      <artifactId>mybatis-plus-boot-starter</artifactId>
      <version>3.4.0</version>
  </dependency>
  <!-- H2 数据库依赖 -->
  <dependency>
      <groupId>com.h2database</groupId>
      <artifactId>h2</artifactId>
      <version>1.4.200</version>
  </dependency>
</dependencies>

接着,我们需要创建一个 User 实体类:

@Data
public class User {
    private Long id;
    private String name;
    private Integer age;
    private String email;

    // get/set 方法略
}

接下来,我们需要创建一个 UserMapper 接口:

public interface UserMapper extends BaseMapper<User> {
}

注意这里我们让 UserMapper 继承了一个 BaseMapper 类,这是 Mybatis-Plus 提供的一个接口,它包含了许多常用的 SQL 操作方法。

然后,我们需要在 application.yml 中配置 Mybatis 和 Mybatis-Plus:

spring:
  datasource:
    url: jdbc:h2:mem:test
    driver-class-name: org.h2.Driver
    username: sa
    password:
  jackson:
    date-format: yyyy-MM-dd HH:mm:ss
mybatis-plus:
  mapper-locations: classpath:mapper/*.xml

这里我们使用 In-Memory 数据库 H2。同时,我们指定了 Mybatis-Plus 的 Mapper 文件所在的路径。

分页插件

Mybatis-Plus 提供了一个优秀的分页插件,我们可以快捷地进行分页操作。

首先,我们需要在 UserMapper.java 中添加一个分页查询方法:

List<User> selectUserPage(Page<User> page, @Param("age") Integer age);

这里我们使用了 Mybatis-Plus 中的 Page 类,它表示分页相关的参数(当前页数、每页条数、总页数、总条数等)。

接下来,在 UserMapper.xml 中实现 selectUserPage 方法的 SQL:

<select id="selectUserPage" resultType="User">
    SELECT * FROM user
    WHERE age = #{age}
</select>

我们只查询年龄为指定数值的用户。

最后,在 UserService 中使用 selectUserPage 方法进行分页查询:

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

    public IPage<User> selectUserPage(Page<User> page, Integer age) {
        return userMapper.selectUserPage(page, age);
    }
}

这里我们使用了 IPage 接口,它是 Mybatis-Plus 中的一个分页接口,实现了分页相关的方法,例如获取当前页码等。

下面是一个完整的分页查询示例:

@GetMapping("/users")
public IPage<User> selectUserPage(@RequestParam(defaultValue = "1") Integer pageNum,
                                  @RequestParam(defaultValue = "10") Integer pageSize,
                                  @RequestParam(required = false) Integer age) {
    Page<User> page = new Page<>(pageNum, pageSize);
    return userService.selectUserPage(page, age);
}

这里我们使用了 @RequestParam 注解,方便接收客户端传来的请求参数。

自动填充

Mybatis-Plus 还提供了一个自动填充功能,它可以在插入或更新数据时自动填充某些字段,解放我们手动填充的工作量。

首先,我们需要一个自动填充的字段,例如创建时间和更新时间。我们可以在 User 实体类中添加两个字段:

@Data
public class User {
    private Long id;
    private String name;
    private Integer age;
    private String email;
    private Date createTime;
    private Date updateTime;

    // get/set 方法略
}

然后,我们需要创建一个自动填充的类,例如 UserMetaObjectHandler:

@Component
public class UserMetaObjectHandler implements MetaObjectHandler {
    @Override
    public void insertFill(MetaObject metaObject) {
        this.fillStrategy(metaObject, "createTime", new Date());
        this.fillStrategy(metaObject, "updateTime", new Date());
    }

    @Override
    public void updateFill(MetaObject metaObject) {
        this.fillStrategy(metaObject, "updateTime", new Date());
    }
}

注意这里我们让 UserMetaObjectHandler 实现了 MetaObjectHandler 接口,这是 Mybatis-Plus 提供的一个接口,它包含了填充字段的方法。

接下来,我们需要在 UserMapper.java 中开启自动填充:

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

在这里,我们使用了 @Component 注解,让 UserMapper 被 Spring 容器管理。

最后,在 UserService 中使用 UserMapper 进行插入或更新操作:

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

    public int insertUser(User user) {
        return userMapper.insert(user);
    }

    public int updateUser(User user) {
        return userMapper.updateById(user);
    }
}

这里我们使用了 UserMapper 中提供的 insert 和 updateById 方法进行插入或更新操作。

下面是一个完整的自动填充示例:

@PostMapping("/users")
public int insertUser(@RequestBody User user) {
    return userService.insertUser(user);
}

@PutMapping("/users")
public int updateUser(@RequestBody User user) {
    return userService.updateUser(user);
}

这里我们使用了 @RequestBody 注解,方便接收客户端传来的 user 对象。

总结

至此,我们已经完成了 Spring Boot 2.3 集成 Mybatis-Plus 高级功能的攻略。在本文中,我们使用了两个 Mybatis-Plus 的高级功能,分别是分页插件和自动填充。希望能够对您有所帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:springboot2.3 整合mybatis-plus 高级功能(图文详解) - Python技术站

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

相关文章

  • 通过Navicat for MySQL远程连接的时候报错mysql 1130的解决方法

    这是一篇关于“通过Navicat for MySQL远程连接的时候报错mysql 1130的解决方法”的攻略,攻略包含以下内容: 问题原因 解决方法 配置允许远程连接的账户和密码 配置服务器的防火墙规则 示例说明 问题原因 当我们在使用Navicat for MySQL远程连接MySQL数据库时,会遇到以下错误: error 1130 (HY000): Ho…

    database 2023年5月18日
    00
  • win10下MYSQL 8.0.16的下载、安装以及配置

      https://blog.csdn.net/qq_34444097/article/details/82315587 下载安装配置链接:https://blog.csdn.net/m0_37788308/article/details/79965378 mysql-8.0.16补充: 1.第一次登陆的随机密码在 C:\mysql-8.0.16-winx6…

    MySQL 2023年4月13日
    00
  • MySQL INSERT:插入数据(添加数据)详解

    MySQL INSERT语句用于向MySQL表中插入新数据。常常用于添加新行或记录。 INSERT语法: INSERT INTO table_name (column1, column2, column3, …) VALUES (value1, value2, value3, …); 其中,table_name为要插入数据的表名;column1、co…

    MySQL 2023年3月9日
    00
  • 细谈Mysql的存储过程和存储函数

    细谈 MySQL 的存储过程和存储函数 MySQL 存储过程和存储函数是一种封装 SQL 语句和业务逻辑的方式,可减少应用程序和数据库之间的网络通信,提高数据处理效率,也可有效提高数据的安全性。在本篇文章中,我们将详细介绍 MySQL 存储过程和存储函数的定义、使用、应用场景和注意事项,并给出两条相关示例演示。 存储过程和存储函数的定义 存储过程是一组经过编…

    database 2023年5月22日
    00
  • 详解Java获取环境变量及系统属性的方法

    详解Java获取环境变量及系统属性的方法 简介 Java程序可以获取当前操作系统的环境变量和系统属性。环境变量指的是操作系统中设置的变量,它们可以影响程序的行为。系统属性指的是Java虚拟机提供的参数,它们可以影响Java程序的行为。获取环境变量以及系统属性的方法都可以通过System类来完成。 获取环境变量 使用System.getenv()方法可以获取所…

    database 2023年5月21日
    00
  • mysql like查询字符串示例语句

    以下是完整的攻略: 什么是mysql like查询 MySQL提供了LIKE查询语句来进行字符串模糊匹配。LIKE语句语法如下: SELECT column1, column2, column3, … FROM table_name WHERE columnN LIKE pattern; 其中,columnN为要查询的列名,pattern是用来匹配的字符…

    database 2023年5月22日
    00
  • Microsoft Sql server2005的安装步骤图文详解及常见问题解决方案

    Microsoft SQL Server 2005 安装步骤 准备工作 在安装 SQL Server 2005 之前,需要确保系统满足以下要求: 操作系统:Windows XP SP2 或更高版本,Windows Server 2003 SP1 或更高版本,Windows Vista 或更高版本,Windows Server 2008 或更高版本。 硬件配置…

    database 2023年5月21日
    00
  • ERROR 1045 (28000): Access denied for user ”root”@”localhost” (using password: YES)实用解决方案

    这个错误通常表示MySQL无法使用提供的用户名和密码进行登录操作。以下是可能导致此错误的一些原因和相应的解决方案。 原因1:用户名或密码不正确 如果提供的用户名或密码不正确,那么MySQL会提示“Access denied”错误。为了解决这个问题,你需要确认你使用的用户名和密码是正确的。你可以尝试重置密码,方法如下: 在终端中以root用户身份运行mysql…

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