?🎉🎉欢迎来到我的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的具体使用可查看下方网址:
演示
只对自动注入的 sql 起效:
- 插入: 不作限制
- 查找: 追加 where 条件过滤掉已删除数据,如果使用 wrapper.entity 生成的 where 条件也会自动追加该字段
- 更新: 追加 where 条件防止更新到已删除数据,如果使用 wrapper.entity 生成的 where 条件也会自动追加该字段
- 删除: 转变为 更新
字段类型支持说明:
字段类型支持说明:
- 支持所有数据类型(推荐使用?
Integer
,Boolean
,LocalDateTime
)- 如果数据库字段使用
datetime
,逻辑未删除值和已删除值支持配置为字符串null
,另一个值支持配置为函数来获取值如now()
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)
? ? ? ? ?具体的设置配置根据自己设置的数据库字段名以及自己的需求
? ? ? ? ?在数据库中添加一个字段用于逻辑删除
如果yml文件中配置了指定的字段则不用使用注释?
? ? ? ? ?由此可知我们对指定ID的数据不会进行删除只会对其的逻辑删除的字段进行修改
当要更新一条记录的时候,希望这条记录没有被别人更新
乐观锁实现方式:
- 取出记录时,获取当前 version
- 更新时,带上这个 version
- 执行更新时, set version = newVersion where version = oldVersion
- 如果 version 不对,就更新失败
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;
}
}
? ? ? ? 在实体类中添加对应字段,数据库表中也添加指定的字段名
?
?
?
????????默认将乐观锁的字段携带过去了,当我们多次修改同一条数据,该字段会发生改变
? ? ? ? ?运行代码后,书籍名称为后面b1变量设置的名称
? ? ? ? 与之前的对比的会进行两次修改
?? ? ? ? ?运行代码后,书籍名称为后面b变量设置的名称
? ? ? ? ?? ? ? ? 与之前的对比的会进行1次修改
支持的数据库
mysql,oracle,db2,h2,hsql,sqlite,postgresql,sqlserver,Phoenix,Gauss ,clickhouse,Sybase,OceanBase,Firebird,cubrid,goldilocks,csiidb,informix,TDengine,redshift
达梦数据库,虚谷数据库,人大金仓数据库,南大通用(华库)数据库,南大通用数据库,神通数据库,瀚高数据库,优炫数据库,星瑞格数据库
🎉🎉本期的博客分享到此结束🎉🎉
📚📚各位老铁慢慢消化📚📚
🎯🎯下期博客博主会带来新货🎯🎯
🎁三连加关注,阅读不迷路?!🎁