TableLogicUnique
大约 3 分钟
TableLogicUnique
标识实体类对应的表是唯一逻辑删除的
参数说明
参数 | 类型 | 必须 | 默认 | 说明 |
---|---|---|---|---|
columnName | String | 否 | "unique_key" | 数据库表字段名 |
value | String | 否 | "uniqueKey" | 用于标识唯一逻辑删除的字段 |
使用说明
注解到实体类上,来标识这个实体类对应的表是唯一逻辑删除的,当使用 MyBatisPlus
的方法逻辑删除数据时,会根据这个注解里面信息来自动更新唯一逻辑删除标识字段,一般是将当前行的unique_key
更新成当前行的id
(唯一值)的值
唯一逻辑删除
顾名思义,就是说,如果某个表的数据是逻辑删除的,但是这个表里面的数据又有些字段是有唯一性的,比如:用户表,用户名,可以是唯一的,但是又有要求这张表的数据是逻辑删除的,删除用户的时候不能直接把用户的信息删除掉,那么下次再添加一个同用户名的用户时,就会报唯一键错误了,所以通常的解决方案是,把用户和和一个字段比如unique_key
,组合起来作为唯一键
id | name | unique_key | is_deleted |
---|---|---|---|
1 | admin | 0 | 0 |
比如:admin + 0 是唯一的,unique_key
默认值就是 0
id | name | unique_key | is_deleted |
---|---|---|---|
1 | admin | 1 | 1 |
删除之后,把unique_key
设置成 id 或者是一个随机值
id | name | unique_key | is_deleted |
---|---|---|---|
1 | admin | 1 | 1 |
2 | admin | 0 | 0 |
id | name | unique_key | is_deleted |
---|---|---|---|
1 | admin | 1 | 1 |
2 | admin | 2 | 1 |
3 | admin | 0 | 0 |
...
这样再继续添加新数据的时候就不会报唯一键异常了,所以,@TableLogicUnique
注解的工作就是自动完成这个将unique_key
设置成id
(唯一值)的值
提示
有了unique_key
还可以绑定这个表所有需要确定唯一键的列,比如,用户名和这个绑定了,还可以绑定身份证,绑定手机号,绑定各种唯一列,因为只要是和unique_key
组合唯一键,unique_key
改变了,也就意味着是另一个新的数据了,这样来确定未被删除的唯一性
,即永远只有一个唯一的未删除的列
参考
框架自带了这样的实体类父类:UniqueDeleteLogic
,如果按标准的来,可以考虑使用这个