MyBatisPlus常用注解
- @TableName
映射数据库的表名 @TableName(value=“数据库的表名”)
- @TableId
设置主键映射 @TableId(value=“表中的主键字段名” type=IdType.设置主键类型)
AUTO(0), //自增
NONE(1), // MP set主键,雪花算法实现
INPUT(2), // 手动赋值 如果没有手动赋值,数据库则自增赋值
ASSIGN_ID(3), // MP 分配ID Long Integer String
ASSIGN_UUID(4), //分配UUID String
/** @deprecated */
@Deprecated
ID_WORKER(3),
/** @deprecated */
@Deprecated
ID_WORKER_STR(3),
/** @deprecated */
@Deprecated
UUID(4);
- @TableFiled
映射非主键字段 @TableFiled(value=“表中的字段名” ,exist = true/false, select =true/false,fill = FieldFill.DEFAULT)
exist 表示该字段是否为数据库字段 一般在VO DTO中使用的比较多
select 表示查询时,选择是否查询该字段
file 数据自动填充 一般使用在创建时间和修改时间
DEFAULT, //默认
INSERT, //插入
UPDATE, //更新
INSERT_UPDATE; // 更新并插入
这个自动填充需要创建一个自动填充的处理器
@Slf4j
@Component
public class MyMetaObjectHandler implements MetaObjectHandler {
@Override
public void insertFill(MetaObject metaObject) {
this.setFieldValByName("createTime",new Date(),metaObject);
this.setFieldValByName("updateTime",new Date(),metaObject);
}
@Override
public void updateFill(MetaObject metaObject) {
this.setFieldValByName("updateTime",new Date(),metaObject);
}
}
每当有新的数据插入或者修改都会自动进入这个处理器。
- @Version
乐观锁 处理并发的解决方案
通过version字段,保证数据的统一性,当修改数据时,会进行version的对比,只有当version满足条件时才进行修改操作
– 数据库添加version字段 默认值为1
– 实体类添加属性 version 并添加@Version 注解
– 添加一个配置类
@Configuration
public class MybatisPlusConfig {
@Bean
public OptimisticLockerInterceptor optimisticLockerInterceptor(){
return new OptimisticLockerInterceptor();
}
//分页查询
@Bean
public PaginationInterceptor paginationInterceptor() {
return new PaginationInterceptor();
}
}
- @EnumValue
通用的枚举类注解,将数据库的字段映射成枚举类型的成员变量
import com.baomidou.mybatisplus.annotation.EnumValue;
public enum SignStatusEnum {
ONLINE(1,"在线"),
OFFLINE(0,"离线");
@EnumValue
private int code;
private String msg;
SignStatusEnum(int code, String msg) {
this.code = code;
this.msg = msg;
}
}
实体类中的字段
private SignStatusEnum signStatus; //signStatus为数据库中的字段名
application.yml配置文件需要添加
mybatis-plus:
type-enums-package: com.cn.backstage.enums
- @TableLogic
映射逻辑删除
– 在数据库添加deleted字段 int类型 默认是0
– 在实体类添加注解
@TableLogic
private int deleted
– 在application.yml添加配置
mybatis-plus:
global-config:
db-config:
logic-delete-value: 1
logic-not-delete-value: 0
逻辑删除执行的是更新操作