Mybatis-Plus扩展(进一步探索Mybatis-Plus的功能)
?🎉🎉欢迎来到我的CSDN主页!🎉🎉
🏅我是君易--鑨,一个在CSDN分享笔记的博主。📚📚
🌟推荐给大家我的博客专栏《SpringBoot开发之Mybatis-Plus系列》。🎯🎯
🎁如果感觉还不错的话请给我关注加三连吧!🎁🎁
前言
? ? ? ? 在上一期的博客中我们对Mybatis-Plus有了一个初步的认识以及掌握如何在SpringBoot中如何集成,以及对其增删改查功能的方法功能的实现。今天的博客是基于上一期的知识点进行进一步的延伸学习。
一、数据模拟生成器
BootApplicationTests.java
package com.yx.mybatisplus;
import com.github.javafaker.Faker;
import com.yx.mybatisplus.pojo.Book;
import com.yx.mybatisplus.service.IBookService;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import java.util.Locale;
@SpringBootTest
class BootApplicationTests {
@Autowired
private IBookService bookService;
@Test
public void test() {
for (int i = 0; i < 10; i++) {
// Goods goods = new Goods();
Book book=new Book();
Faker faker = new Faker(Locale.CHINA);
book.setBookname(faker.book().title());
book.setPrice(Float.parseFloat(String.valueOf(faker.number().randomDouble(2, 100, 999))));
bookService.save(book);
}
}
}
? ? ? ? 我们是通过for循环和Faker进行一个数据生成,Farker的具体使用可查看下方网址:
演示
二、逻辑删除
1. 概述
只对自动注入的 sql 起效:
- 插入: 不作限制
- 查找: 追加 where 条件过滤掉已删除数据,如果使用 wrapper.entity 生成的 where 条件也会自动追加该字段
- 更新: 追加 where 条件防止更新到已删除数据,如果使用 wrapper.entity 生成的 where 条件也会自动追加该字段
- 删除: 转变为 更新
字段类型支持说明:
字段类型支持说明:
- 支持所有数据类型(推荐使用?
Integer
,Boolean
,LocalDateTime
)- 如果数据库字段使用
datetime
,逻辑未删除值和已删除值支持配置为字符串null
,另一个值支持配置为函数来获取值如now()
2. 使用
2.1 yml文件配置
mybatis-plus:
global-config:
db-config:
logic-delete-field: flag # 全局逻辑删除的实体字段名(since 3.3.0,配置后可以忽略不配置步骤2)
logic-delete-value: 1 # 逻辑已删除值(默认为 1)
logic-not-delete-value: 0 # 逻辑未删除值(默认为 0)
? ? ? ? ?具体的设置配置根据自己设置的数据库字段名以及自己的需求
2.2 数据库字段配置?
? ? ? ? ?在数据库中添加一个字段用于逻辑删除
2.3 实体对象字段定义设置
如果yml文件中配置了指定的字段则不用使用注释?
2.4 控制层编写删除请求
3. 测试?
? ? ? ? ?由此可知我们对指定ID的数据不会进行删除只会对其的逻辑删除的字段进行修改
三、乐观锁插件
1. 概述
当要更新一条记录的时候,希望这条记录没有被别人更新
乐观锁实现方式:
- 取出记录时,获取当前 version
- 更新时,带上这个 version
- 执行更新时, set version = newVersion where version = oldVersion
- 如果 version 不对,就更新失败
2. 使用:
2.1??插件类导入
MybatisPlusConfig.java
package com.yx.yxbook.config;
import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.OptimisticLockerInnerInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class MybatisPlusConfig {
/**
* 添加分页插件
*/
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor() {
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
interceptor.addInnerInterceptor(new OptimisticLockerInnerInterceptor());//乐观锁
// interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
return interceptor;
}
}
2.2 实体类添加乐观锁字段
? ? ? ? 在实体类中添加对应字段,数据库表中也添加指定的字段名
?
?
2.3 控制类编写修改方法
3. 测试
?
????????默认将乐观锁的字段携带过去了,当我们多次修改同一条数据,该字段会发生改变
情景模拟:
情景一:
? ? ? ? ?运行代码后,书籍名称为后面b1变量设置的名称
? ? ? ? 与之前的对比的会进行两次修改
情景二:
?? ? ? ? ?运行代码后,书籍名称为后面b变量设置的名称
? ? ? ? ?? ? ? ? 与之前的对比的会进行1次修改
四、分页插件
1. 概述
支持的数据库
mysql,oracle,db2,h2,hsql,sqlite,postgresql,sqlserver,Phoenix,Gauss ,clickhouse,Sybase,OceanBase,Firebird,cubrid,goldilocks,csiidb,informix,TDengine,redshift
达梦数据库,虚谷数据库,人大金仓数据库,南大通用(华库)数据库,南大通用数据库,神通数据库,瀚高数据库,优炫数据库,星瑞格数据库
2.?使用
2.1 插件类在引入分页插件
2.2 控制类使用
2.3 分页的模糊查询?
3. 测试
初步测试
?带模糊查询的测试
🎉🎉本期的博客分享到此结束🎉🎉
📚📚各位老铁慢慢消化📚📚
🎯🎯下期博客博主会带来新货🎯🎯
🎁三连加关注,阅读不迷路?!🎁
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!