一、逻辑删除
1.配置及例子
1.配置文件 (下面的是一个全局配置**)
2. 配置类
3. 实体类
4. 测试
例1 删除

根据上面可以看到,delete语句成了一条update语句,将逻辑删除字段设置为0了
例2 查询

例3 插入
2.查询中排除删除标识字段及注意事项
排除删除标识字段

注意事项 **自定义的语句不会加上逻辑删除标识


从上面这个deleted字段可以看出,即使在实体类已经标识过了不参与查询,但是自定义的SQL语句还是不会进行判断,并且也会查出来这个逻辑删除字段
解决方法:
1:
**
二、自动填充
1. 介绍
有的表有新增时间。修改时间等字段,每次自己插入一个字段很麻烦,所以可以选择自动填充,并且可以自动填充操作人是谁
2. 实现
1.修改实体类,增加注解
2.配置类,新增元对象处理器
3.测试
插入操作


更新操作
3. 自动填充优化
比如上面元对象处理器在每次插入的时候,都会调用insertFill()方法执行里面的内容,但是一些插入操作中,并没有对应的creatTime字段,那么就会有很多开销



上面的会执行成功,因为有这个setter方法,但是如果是下面的话,就不会成功了



通过上面可以看到,虽然是有这个create_time字段,但是并没有填充
案例二:如果我设置了更新时间,就不让它自动填充,如果我没有设置更新时间,则自动填充


三、乐观锁插件
1. 配置文件中加入插件类
2. 在版本号上加入@Version注解
四、性能分析插件





设置SQL格式化

设置SQL的最大时长,超过了就终止

执行SQL分析打印
1.引入依赖 
2.application.yml中新增配置


3.新增配置文件
mybatis-plus 官网有对应的配准文件内容
4.测试
**
五、多租户SQL解析器
1. 简介
是一种架构,目的是在多用户条件下,实现用户使用同一套程序且保证用户间数据隔离。
一种方式是不同用户使用独立的数据库,隔离性最高,
第二种是共享数据库,独立schema,多个或所以租户共享database,每个租户有自己的schema(user),
第三种是共享数据库(database),共享schema,共享数据表,每操作一条数据都有该用户的标识
2.实现(针对第三种方式)
依赖于分页插件
1.配置类生明分页插件


2.测试
查询

更新

插入**

3.特定sql过滤
表示过滤特定的方法,比如有的方法,例如selectById(),这个方法不想增加租户信息,其他方法又想增加租户信息,这种就属于方法层面的,而不是表层面的
第一种实现:
1.在配置类的分页插件中,接上面5.2的实现,增加一些东西
2.测试
1测试selectList(),结果有租户信息

2测试selectById(),发现没有租户信息,说明设置成功了
第二种实现:

如果mybatis-plus是3.1.1之前的版本,还需要设置yml文件,之后的不需要设置
测试:








