mybatis plus 取消createBy 自动填充
时间: 2023-07-11 15:33:07 浏览: 120
在 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 提供了方便的日期自动填充功能,可以在插入或更新数据时自动填充指定的日期字段。要实现日期自动填充,你需要进行以下几个步骤:
1. 创建一个实体类,并在需要自动填充日期的字段上添加 `@TableField(fill = FieldFill.INSERT_UPDATE)` 注解。示例代码如下:
```java
public class User {
private Long id;
private String name;
@TableField(fill = FieldFill.INSERT_UPDATE)
private Date createTime;
// 省略 getter 和 setter 方法
}
```
2. 在 MyBatis-Plus 的配置类中配置日期自动填充处理器。示例代码如下:
```java
@Configuration
public class MybatisPlusConfig {
@Bean
public MetaObjectHandler metaObjectHandler() {
return new MyMetaObjectHandler();
}
}
```
3. 创建一个日期自动填充处理器类,实现 MyBatis-Plus 的 `MetaObjectHandler` 接口,并重写相应的方法。示例代码如下:
```java
public class MyMetaObjectHandler implements MetaObjectHandler {
@Override
public void insertFill(MetaObject metaObject) {
this.strictInsertFill(metaObject, "createTime", Date.class, new Date());
}
@Override
public void updateFill(MetaObject metaObject) {
this.strictUpdateFill(metaObject, "createTime", Date.class, new Date());
}
}
```
通过以上步骤,当使用 MyBatis-Plus 进行数据插入或更新操作时,会自动填充 `createTime` 字段的值为当前时间。需要注意的是,`createTime` 字段需要在数据库中定义为日期类型。