百度那么久还不如看看官方文档:https://mp.baomidou.com/
快速跳转注解说明:https://mp.baomidou.com/guide/annotation.html
@TableLogic
表示逻辑删除
value: 未删除的标记
delval: 已删除的标记
@TableLogic(value = "0", delval = "1")
private Integer flag;
调用BaseMapper的deleteById(id)或者IService的removeById(id)时
- 无该注解:直接从表里删除(delete)
- 有该注解:会直接更新方法,将指定的字段改为delval的值(update)
在SQL查询操作的时候,始终会带上flag=0的条件值(默认0:未删除,1:已删除)附:如果你项目里1表示有效,0表示删除,那只需要改一改value = “1”, delval = "0"就可以了)
select * from XXX where flag=0 and x=x;
官方解释:只对自动注入的sql起效
- 插入: 不作限制
- 查找: 追加where条件过滤掉已删除数据,且使用 wrapper.entity 生成的where条件会忽略该字段
- 更新: 追加where条件防止更新到已删除数据,且使用 wrapper.entity 生成的where条件会忽略该字段
- 删除: 转变为更新
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)
@TableId
描述:主键注解
属性 | 类型 | 必须指定 | 默认值 | 描述 |
---|---|---|---|---|
value | String | 否 | “” | 主键字段名 |
type | Enum | 否 | IdType.NONE | 主键类型 |
IdType
public enum IdType {
AUTO(0),
NONE(1),
INPUT(2),
ASSIGN_ID(3),
ASSIGN_UUID(4),
/** @deprecated */
@Deprecated
ID_WORKER(3),
/** @deprecated */
@Deprecated
ID_WORKER_STR(3),
/** @deprecated */
@Deprecated
UUID(4);
private final int key;
private IdType(int key) {
this.key = key;
}
public int getKey() {
return this.key;
}
}
值 | 描述 |
---|---|
AUTO | 数据库ID自增 |
NONE | 无状态,该类型为未设置主键类型(注解里等于跟随全局,全局里约等于 INPUT) |
INPUT | insert前自行set主键值 |
ASSIGN_ID | 分配ID(主键类型为Number(Long和Integer)或String)(since 3.3.0),使用接口IdentifierGenerator的方法nextId(默认实现类为DefaultIdentifierGenerator雪花算法) |
ASSIGN_UUID | 分配UUID,主键类型为String(since 3.3.0),使用接口IdentifierGenerator的方法nextUUID(默认default方法) |
分布式全局唯一ID 长整型类型(please use ASSIGN_ID) | |
32位UUID字符串(please use ASSIGN_UUID) | |
分布式全局唯一ID 字符串类型(please use ASSIGN_ID |
@TableField
描述:字段注解(非主键)
1. 实体类定义的字段与表字段不对应
@TableField(value = "name")
private String cname;
name 对应表字段
FieldStrategy
值 | 描述 |
---|---|
IGNORED | 忽略判断 |
NOT_NULL | 非NULL判断 |
NOT_EMPTY | 非空判断(只对字符串类型字段,其他类型字段依然为非NULL判断) |
DEFAULT | 追随全局配置 |
FieldFill
值 | 描述 |
---|---|
DEFAULT | 默认不处理 |
INSERT | 插入时填充字段 |
UPDATE | 更新时填充字段 |
INSERT_UPDATE | 插入和更新时填充字段 |
插入的时候自动填充createdTime
@TableField(fill = FieldFill.INSERT)
private Date createdTime;
@Version
描述:乐观锁注解、标记 @Verison 在字段上。在更新的时候,它会带上该条件
线程1: update ... from xxx set version = version + 1 where version=x
线程2: update ... from xxx set version = version + 1 where version=x