使用 @TableField(fill = FieldFill.INSERT)需要有什么其他配置
时间: 2023-05-29 10:04:42 浏览: 378
除了使用 @TableField(fill = FieldFill.INSERT) 注解外,如果想要实现自动填充功能,还需要在实体类中配置对应的字段及其填充方式。
具体步骤如下:
1. 在实体类中添加需要自动填充的字段,并使用 @TableField(fill = FieldFill.xxx) 注解指定填充方式,其中 xxx 可以为 INSERT、UPDATE 或 INSERT_UPDATE。
2. 在对应的 Mapper 接口中添加对应的 SQL 语句,如插入数据时需要插入自动填充的字段,更新数据时需要更新自动填充的字段。
3. 配置自动填充处理器,具体实现可以继承 Mybatis Plus 提供的 DefaultMetaObjectHandler 类,并重写相应的方法,实现自动填充的逻辑。
4. 将自动填充处理器配置到 Mybatis Plus 的全局配置中。
示例代码:
实体类:
```java
@Data
public class User {
@TableId(type = IdType.AUTO)
private Long id;
private String name;
@TableField(fill = FieldFill.INSERT)
private Date createTime;
@TableField(fill = FieldFill.INSERT_UPDATE)
private Date updateTime;
}
```
Mapper 接口:
```java
public interface UserMapper extends BaseMapper<User> {
// 添加插入数据时需要插入自动填充的字段
@Override
int insert(User user);
// 添加更新数据时需要更新自动填充的字段
@Override
int updateById(User user);
}
```
自动填充处理器:
```java
public class MyMetaObjectHandler extends DefaultMetaObjectHandler {
@Override
public void insertFill(MetaObject metaObject) {
this.strictInsertFill(metaObject, "createTime", Date.class, new Date());
this.strictInsertFill(metaObject, "updateTime", Date.class, new Date());
}
@Override
public void updateFill(MetaObject metaObject) {
this.strictUpdateFill(metaObject, "updateTime", Date.class, new Date());
}
}
```
Mybatis Plus 全局配置:
```java
@Configuration
public class MybatisPlusConfig {
@Bean
public MyMetaObjectHandler myMetaObjectHandler() {
return new MyMetaObjectHandler();
}
@Bean
public GlobalConfig globalConfig() {
GlobalConfig globalConfig = new GlobalConfig();
globalConfig.setMetaObjectHandler(myMetaObjectHandler());
return globalConfig;
}
}
```