mybatis plus 取消createBy 自动填充
时间: 2023-07-11 08:33:07 浏览: 217
在 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 GlobalConfig globalConfig() {
GlobalConfig globalConfig = new GlobalConfig();
//关闭自动填充功能
globalConfig.setMetaObjectHandler(null);
return globalConfig;
}
}
```
这样,MyBatis Plus就不会自动填充createBy字段了。
相关问题
mybatis plus 取消指定实体 createBy 自动填充
在 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的自动填充。
mybatis-plus自动填充
### MyBatis-Plus 自动填充 功能详解
#### 实现自动填充的关键组件
MyBatis-Plus 提供了 `MetaObjectHandler` 接口来实现字段的自动填充功能。通过继承该接口并重写相应的方法,可以在插入或更新操作时自动生成特定字段的值[^2]。
```java
import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
import org.apache.ibatis.reflection.MetaObject;
public class MyMetaObjectHandler implements MetaObjectHandler {
@Override
public void insertFill(MetaObject metaObject) {
this.strictInsertFill(metaObject, "createTime", Date::new); // 插入时填充创建时间
this.strictInsertFill(metaObject, "createBy", () -> getUserId(), Long.class); // 填充创建者ID
}
@Override
public void updateFill(MetaObject metaObject) {
this.strictUpdateFill(metaObject, "updateTime", Date::new); // 更新时填充修改时间
this.strictUpdateFill(metaObject, "updateBy", () -> getUserId(), Long.class); // 填充修改者ID
}
}
```
#### 字段配置方式
为了使某个字段能够被自动填充,在对应的实体类中需要使用 `@TableField` 注解,并指定 `fill` 属性为合适的枚举值(如 `FieldStrategy.NOT_NULL` 或其他策略)。这允许框架识别哪些字段应该参与自动填充逻辑[^3]。
```java
@TableField(fill = FieldFill.INSERT)
private Date createTime; // 创建时间
@TableField(fill = FieldFill.UPDATE)
private Date updateTime; // 修改时间
```
#### 启用全局处理器
最后一步是在 Spring Boot 应用程序上下文中注册上述处理程序作为 Bean 组件,从而让整个应用程序都能享受到这一特性带来的便利[^1]。
```yaml
mybatis-plus:
global-config:
db-config:
id-type: auto
configuration:
handlers:
- my.package.MyMetaObjectHandler
```
阅读全文
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![-](https://img-home.csdnimg.cn/images/20241226111658.png)
![-](https://img-home.csdnimg.cn/images/20241226111658.png)
![-](https://img-home.csdnimg.cn/images/20241226111658.png)
![-](https://img-home.csdnimg.cn/images/20241226111658.png)
![-](https://img-home.csdnimg.cn/images/20241226111658.png)
![-](https://img-home.csdnimg.cn/images/20241226111658.png)
![-](https://img-home.csdnimg.cn/images/20241226111658.png)
![-](https://img-home.csdnimg.cn/images/20241226111658.png)
![-](https://img-home.csdnimg.cn/images/20241226111658.png)
![-](https://img-home.csdnimg.cn/images/20241226111658.png)
![-](https://img-home.csdnimg.cn/images/20241226111658.png)
![-](https://img-home.csdnimg.cn/images/20241226111658.png)
![-](https://img-home.csdnimg.cn/images/20241226111658.png)
![-](https://img-home.csdnimg.cn/images/20241226111658.png)