天天看点

mybatis plus 快速入门环境搭建一、基本的crud二、分页操作三、自动填充功能

mybatis plus 快速入门

  • 环境搭建
  • 一、基本的crud
    • 查询所有
    • 按照条件查询
      • 1)根据id查询,查询一个
      • 2)根据id查询,查询多个
    • 插入
      • 1)简单的插入数据
      • 插入过程分析
      • 1)插入之前是没有id的,插入之后就有id了
      • 2)id的生成策略
    • 修改
    • 删除
      • 需要增加一个字段 deleted,配上对应的注解
      • 增加 yml 配置
  • 二、分页操作
  • 三、自动填充功能

环境搭建

导入mybatis plus 依赖,注意,导入mybatis plus依赖之后,就不要再导入mybatis 的依赖,可能会有依赖冲突

mybatis plus 快速入门环境搭建一、基本的crud二、分页操作三、自动填充功能

建 spring boot 工程

导入依赖

<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-boot-starter</artifactId>
    <version>3.0.5</version>
</dependency>

           

一、基本的crud

1)写对应的实体类

User

mybatis plus 快速入门环境搭建一、基本的crud二、分页操作三、自动填充功能

2)mapper接口,继承一个父类即可

mybatis plus 快速入门环境搭建一、基本的crud二、分页操作三、自动填充功能

3)继承父类之后,就可以直接调用服类的方法

查询所有

mybatis plus 快速入门环境搭建一、基本的crud二、分页操作三、自动填充功能

按照条件查询

1)根据id查询,查询一个

mybatis plus 快速入门环境搭建一、基本的crud二、分页操作三、自动填充功能

2)根据id查询,查询多个

mybatis plus 快速入门环境搭建一、基本的crud二、分页操作三、自动填充功能
mybatis plus 快速入门环境搭建一、基本的crud二、分页操作三、自动填充功能

3)根据某个条件或几个条件查询,查询

插入

1)简单的插入数据

mybatis plus 快速入门环境搭建一、基本的crud二、分页操作三、自动填充功能

插入过程分析

mybatis plus 快速入门环境搭建一、基本的crud二、分页操作三、自动填充功能

1)插入之前是没有id的,插入之后就有id了

mybatis plus 快速入门环境搭建一、基本的crud二、分页操作三、自动填充功能

2)id的生成策略

默认是 雪花算法,可以保证id 是全局唯一的,并且和UUID不同,雪花算法的id是数字,数字可以是有序的

mybatis plus 快速入门环境搭建一、基本的crud二、分页操作三、自动填充功能

可以通过注解的方式,控制主键的正常策略

有如下几种生成策略,默认是 ID_WORKER

mybatis plus 快速入门环境搭建一、基本的crud二、分页操作三、自动填充功能
  • AUTO 自增的方式
  • NONE 没有主键
  • INPUT 每次插入需要带上主键,不会自动生成
  • ID_WORKER 雪花算法,生成的主键是Long 类型的数据
  • UUID通过UUID·的方式 ID_WORKER_STR ID_WORKER的字符串表示,生成的主键是String 类型的数据

修改

修改,需要传入一个对象

修改的时候,可以应用乐观锁的机制

加一个 version 字段

给配置类增加一个 bean

/**
 * 乐观锁插件 针对字段 version
 * @return
 */
@Bean
public OptimisticLockerInterceptor optimisticLockerInterceptor() {
    return new OptimisticLockerInterceptor();
}
           

修改 id 为 4 的name

mybatis plus 快速入门环境搭建一、基本的crud二、分页操作三、自动填充功能

修改之后,version 值变成了1

mybatis plus 快速入门环境搭建一、基本的crud二、分页操作三、自动填充功能

以上测试的是正常的情况

下面模拟高并发的情况

mybatis plus 快速入门环境搭建一、基本的crud二、分页操作三、自动填充功能

下面的执行结果说明

user.setName("updateName222222");
userMapper.updateById(user);
           

这两句是执行成功的

mybatis plus 快速入门环境搭建一、基本的crud二、分页操作三、自动填充功能

最终的结果

mybatis plus 快速入门环境搭建一、基本的crud二、分页操作三、自动填充功能

删除

逻辑删除

需要增加一个字段 deleted,配上对应的注解

mybatis plus 快速入门环境搭建一、基本的crud二、分页操作三、自动填充功能

增加 yml 配置

mybatis plus 快速入门环境搭建一、基本的crud二、分页操作三、自动填充功能

上面对的配置 表示 逻辑删除之后,deleted 字段变成 1;没有删除之前,deleted 字段的值是 0

(可以设置 deleted 字段的默认值就是 0)

低版本的mybatis plus 逻辑删除需要给配置类一个 bean

/**
 * 逻辑删除 针对字段 deleted
 * @return
 */
@Bean
public ISqlInjector sqlInjector() {
    return new LogicSqlInjector();
}
           

删除之前的数据

mybatis plus 快速入门环境搭建一、基本的crud二、分页操作三、自动填充功能

删除之后的数据

mybatis plus 快速入门环境搭建一、基本的crud二、分页操作三、自动填充功能

注意:

笔者一开始用的 插件的版本是 3.0.5

在做逻辑删除的时候,需要在 配置类里面加上面的 bean

换了最新的版本(3.3.2)之后,只需要加上注解即可,不需要 在配置类里面添加拦截器的配置也是可以正常的逻辑删除的

二、分页操作

增加一个配置bean

mybatis plus 快速入门环境搭建一、基本的crud二、分页操作三、自动填充功能

测试代码

mybatis plus 快速入门环境搭建一、基本的crud二、分页操作三、自动填充功能

三、自动填充功能

场景:阿里开发规定,每张表 需要有 创建时间字段和修改时间字段,这两个字段基本上是自动的填充

1)通过数据库设置字段默认值的方式

dateTime CURRENT_TIMESTAMP

2)通过代码填充的方式

3)通过插入和修改时,带上字段 ,并设置时间

在mybatis 的xml 中

NOW()函数以`'YYYY-MM-DD HH:MM:SS’返回当前的日期时间,可以直接存到DATETIME字段中。

CURDATE()以’YYYY-MM-DD’的格式返回今天的日期,可以直接存到DATE字段中。

CURTIME()以’HH:MM:SS’的格式返回当前的时间,可以直接存到TIME字段中。

4)mybatis plus 可以自动的填充

mybatis plus 快速入门环境搭建一、基本的crud二、分页操作三、自动填充功能

以上注解的含义如下

mybatis plus 快速入门环境搭建一、基本的crud二、分页操作三、自动填充功能

FieldFill 可以有 4 个值

INSERT 表示 该字段在插入的时候,填充

UPDATE 表示 该字段在修改的时候,填充

INSERT_UPDATE 表示 该字段在修改的时候,填充;在插入的时候,也填充

所以,上面实体类的配置的含义是

createTime 是在记录产生的时候填充,填充的是 插入记录的时间,吻合需求

updateTime 在插入记录的时候,也填充插入记录时间,就是给了一个默认的初始值,在记录被修改的时候,updateTime 会更新成修改记录的时间