为请问群无
8-2xuanjqwkleqwklje
自动填充简介:
更新时间:new LocalDateTime().now();数据库内置函数update_time=now();
修改人:从baseController中获取;
新增人:从baseController中获取;
还可以用mp提供的自动填充功能;
MP 七个高级功能
application.yml配置:
mybatis-plus:
global-config:
db-config:
logic-not-delete-value:0
logic-delete-value:1
默认值,逻辑删除是1,逻辑未删除是0
配置类configuration:3.1.1以下版本
在实体类加注解,设置全局@TableLogic/@TableLogic()局部
@TableLogic
private Integer deleted;
测试类:
@Springtest
public calss MyTest{
@Autowired
private UserMapper userMapper;
@Test
public void deletedById(){
int rows = userMapper.deleteById(1092344455666L);
System.out.println("影响行数: "+rows);
}
}
结果是update语句,而不是删除语句。在继续进行update、select方法的的时候,会忽略被标记为“已删除”的记录。
3.1.1之前要设置
多租户,实际上就是同一套系统怎么给多个客户使用,比如thinker那个时候的方案,就是第一种多数据库。成本高,维护成本高。隔离级别高
还有就是第二种用schume
第三种共享数据表,加一个字段区别。
图片上方法为当meteObject里面已经有值了,则拿出来用
下面的是指,如果我已经手动set了就不自动填充
自己定义mp逻辑删除和未删除的值
在mapper中加入新增方法,
注入新增方法
自定义删除方法
当没有传入动态表名,即为null的时候,会采用默认的,如user,即不替换
同样对多租户sql过滤生效
动态表明处理器,需要通过一个HandlerMap进行指定查询表明对应的实体表明,如 :“user”:TableNameHandler(){这里获取到的一个动态表名,如user_2019}
应用于 多个相同结构的分表的解析,通常为 主要作用_1[部门]
过滤是指,过滤掉多租户信息,这里默认不过滤,可以通过:
在分页组件中加入ParserFielter并配置IsqlParserFielter,
在maper方法上加入@SqlFielter注解,并为true
旧版的需要开启全局配置
说白了还是加了一个条件字段
这里主要时通过在分页器中加入了多租户的sql解析器,其中需要传入多租户handler的实现,指定列名和值
多租户是为了让一套程序面向多个用户(企业)且数据隔离
用户数据库一对一
用户Schema一对一,逻辑隔离,都在一个数据库
用户都在一个表里,通过clientId之类的隔离,维护成本低,安全低,恢复成本大
通过@Profile可以设置Bean启动的环境。
可以格式化,可以设置最大运行时间揪出慢SQL
应该先查询出version之后再更新,
注意QueryWrapper不能复用
多读场景乐观锁,多写场景悲观锁