mybatis plus 快速入门

环境搭建

导入mybatis plus 依赖,注意,导入mybatis plus依赖之后,就不要再导入mybatis 的依赖,可能会有依赖冲突在这里插入图片描述
建 spring boot 工程

导入依赖

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

一、基本的crud

1)写对应的实体类
User
在这里插入图片描述

2)mapper接口,继承一个父类即可
在这里插入图片描述
3)继承父类之后,就可以直接调用服类的方法

查询所有

在这里插入图片描述

按照条件查询

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

在这里插入图片描述

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

在这里插入图片描述
在这里插入图片描述
3)根据某个条件或几个条件查询,查询

插入

1)简单的插入数据

在这里插入图片描述

插入过程分析

在这里插入图片描述

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

在这里插入图片描述

2)id的生成策略

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

在这里插入图片描述
可以通过注解的方式,控制主键的正常策略

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

在这里插入图片描述

  • 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

在这里插入图片描述

修改之后,version 值变成了1
在这里插入图片描述
以上测试的是正常的情况

下面模拟高并发的情况
在这里插入图片描述

下面的执行结果说明

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

这两句是执行成功的
在这里插入图片描述

最终的结果
在这里插入图片描述

删除

逻辑删除

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

在这里插入图片描述

增加 yml 配置

在这里插入图片描述

上面对的配置 表示 逻辑删除之后,deleted 字段变成 1;没有删除之前,deleted 字段的值是 0
(可以设置 deleted 字段的默认值就是 0)

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

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

删除之前的数据
在这里插入图片描述

删除之后的数据
在这里插入图片描述
注意:
笔者一开始用的 插件的版本是 3.0.5
在做逻辑删除的时候,需要在 配置类里面加上面的 bean

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

二、分页操作

增加一个配置bean

在这里插入图片描述

测试代码
在这里插入图片描述

三、自动填充功能

场景:阿里开发规定,每张表 需要有 创建时间字段和修改时间字段,这两个字段基本上是自动的填充
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 可以自动的填充
在这里插入图片描述
以上注解的含义如下

在这里插入图片描述
FieldFill 可以有 4 个值
INSERT 表示 该字段在插入的时候,填充
UPDATE 表示 该字段在修改的时候,填充
INSERT_UPDATE 表示 该字段在修改的时候,填充;在插入的时候,也填充
所以,上面实体类的配置的含义是
createTime 是在记录产生的时候填充,填充的是 插入记录的时间,吻合需求
updateTime 在插入记录的时候,也填充插入记录时间,就是给了一个默认的初始值,在记录被修改的时候,updateTime 会更新成修改记录的时间

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值