mybatis plus 取消指定实体 createBy 自动填充
时间: 2023-07-18 20:30:34 浏览: 170
mybatis实体类自动生成工具
在 MyBatis Plus 中,可以为不同实体类设置不同的自动填充规则。取消指定实体类的createBy自动填充需要在实体类中使用注解 `@TableField(fill = FieldFill.DEFAULT)` 来标识该字段不进行自动填充。具体来说,可以按照以下步骤进行操作:
1. 在实体类中取消createBy的自动填充:
```java
@TableField(fill = FieldFill.DEFAULT)
private String createBy;
```
2. 在MyBatis Plus配置中为该实体类设置自动填充策略:
```java
@Configuration
public class MybatisPlusConfig {
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor() {
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
//创建拦截器链
List<Interceptor> interceptorList = new ArrayList<>();
//自动填充拦截器
Interceptor fillInterceptor = new MybatisPlusAutoFillInterceptor();
//为指定实体类设置自动填充策略
List<MetaObjectHandler> metaObjectHandlers = new ArrayList<>();
//指定实体类的自动填充策略
metaObjectHandlers.add(new MybatisPlusMetaObjectHandler());
fillInterceptor.setProperties(Collections.singletonMap("metaObjectHandlers", metaObjectHandlers));
interceptorList.add(fillInterceptor);
interceptor.setInterceptors(interceptorList);
return interceptor;
}
}
```
其中,`MybatisPlusMetaObjectHandler`是自定义的MetaObjectHandler类,用于设置该实体类的自动填充规则。在该类中,使用注解 `@Override` 标识重写的方法,然后在方法中设置不需要自动填充的字段。例如:
```java
public class MybatisPlusMetaObjectHandler extends BaseMetaObjectHandler {
@Override
public void insertFill(MetaObject metaObject) {
//设置createBy不进行自动填充
this.strictInsertFill(metaObject, "createTime", LocalDateTime::now, LocalDateTime.class);
}
@Override
public void updateFill(MetaObject metaObject) {
//设置updateBy不进行自动填充
this.strictUpdateFill(metaObject, "updateTime", LocalDateTime::now, LocalDateTime.class);
}
}
```
这样,就可以为指定实体类设置自动填充规则,并取消createBy的自动填充。
阅读全文