mybatis-plugin

mybatis_plugins

是mybatis的增强。
拥有一系列的功能:
内置通用Mapper,Service。 支持Lambda调用
支持多种数据库

使用

编写自己的Mapper. extends BaseMapper. 即可使用CRUD 的功能

功能

URL

mysql8.1 以上版本. 配合的URL 需要加上 GMT%2B8.
springBoot 需要 2.1 以上

主键生成

在插入数据时,数据的主键有多种方式生成
数据库主键策略:
AUTO_INCREMENT
是数据库自增长.插入数据的时候,不用传递主键数据
但是
在分库分表的情况下,需要得到上一张表的最后一个ID值,才能主键自增
UUID
每次生成一个UUID,插入到数据库
坏处是,可读性差.如果进行排序的话则不是那么的方便
snowflake 雪花算法
MP支持的一个算法.生成一个Long型的ID.
其中 41bit 作为毫秒数
10bit作为机器ID. 5bit 作为 数据中心. 5bit 是机器ID
12bit 作为毫秒内流水号. 最后一个符号是0
这是一些常用的知识

MP主键策略

设置某个表

在 实体类的ID上添加注解

@TableId(type = IdType.AUTO)
private String id;

AUTO :数据库自增
ID_WORKER: mp策略,生成19位Long 型数字类型的值
ID_WORKER_STR: mp策略,19位字符串类型
INPUT: 自己输入
NONE: 没有策略
UUID: 随机UUID 值

设置所有表

就不在实体类上使用@TableId 注解了
直接在 配置文件中 配置

mybatis-plus.global-config.id-type=auto

即可

自动填充

数据库表有一些字段,比如 create_date,update.
在创建的时候或更新的时候,自动更新这些字段的值
1
在实体类中字段上添加注解
@TableFiled(fill = FieldFill.INSERT): 在插入的时候自动插入其值
@TableFiled(fill = FieldFill.INSERT_UPDATE): 在修改的时候自动填入值
2

@Component
public class MyMetaObjectHandler implements MetaObjectHandlers
{
	// 实现俩个方法
	@Override
	public void insertFill(MetaOBject metaObject){
		this.setFieldValByName("createTime",new Date(),metaObject);
		this.setFieldValByName("update",new Date(),metaObject);
	}
	
	@Override
	public void updateFill(MetaOBject metaObject){
		this.setFieldValByName("update",new Date(),metaObject);
	}
	
}

乐观锁

MP 同样可以使用乐观锁
乐观锁 主要用户 丢失更新.
使用
1 在 实体类添加字段 version
2 在 myabti-plugin 中配置乐观锁插件
3 添加注解 @Version, 在 version 字段上
4 建立配置类

@Configuration
@MapperScan("cn.nctwo")
public class MpConfig{
	// 乐观锁插件
	@Bean
	public OptimisticLockerInterceptor optimisticLockerInterceptor(){
		return new OptimisticLockerInterceptor();
	}
}

分页

// 分页插件
@Bean
public PaginationInterceptor paginationInterceptor(){
return new PaginationInterceptor();
}

代码
使用 Page类. Page接收俩个参数.第一个是第几页,第二个是每页几条.
使用mapper 进行查询. 讲 page 传递进去.
编写代码
Page page = new Page(1,5);
当前页,每页条数
userMapper.selectPage(page,null)
在使用过程中,会将数据分装到page 对象中
sout(page.getCurrent()): 获取当前页
sout(page.getRecords()): 每页数据记录数

还有上一页和下一页
page.hasNext()
page.hasPrevious()

删除

删除也是有插件的. 主要用于逻辑删除.
添加 删除字段. 通过插件,在删除的时候,自动将值修改为1
配置
1 添加删除字段和注解
@TableLogic
private Integer deleted;

2 配置插件

@Bean
public ISqlInjector sqlInjector(){
	return new LogicSqlInjector();
}

3 配置文件
指定了 删除时候字段的值

maybatis-plus.global-config.db-config.logic-delete-value=1
maybatis-plus.global-config.db-config.logic-not-delete-value=1

最后,配置了删除插件之后,我们在查询的时候只能够查询到没有逻辑删除的数据
如果想要查询逻辑删除的数据只能够自己写 SQL 代码查询了

性能

用于显示 SQL语句执行时长

@Bean
@Profile({"dev","test"})
public PerformanceInterceptor performanceInterceptor(){
	PerformanceInterceptor per = new PerformanceInterceptor();
	// 超过100ms 的sql 不执行
	per.setMaxTime(100);
	persetFormat(true);
	return per;
}

之后我们在 配置文件中配置 使用的文件

条件查询

Wrapper 的体系中我们一般使用 QueryWrapper 进行查询
1 创建 QueryWrapper 对象
有几个 Unicode 码. ge,gt,le,lt .他们别的是: >=,> <=,<
eq: ==,ne: !=
between: 包括边界的
like: 模糊查询
orderByDesc:
last: 最后拼接的SQL
查询指定的列:
wrapper.select(“id”,”name”)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值