mybatis-plus实现自动填充创建人/更新人以及时间字段
在MyBatis-Plus中,自动填充功能可以通过实现MetaObjectHandler
接口来完成。以下是一个简单的实现示例:
- 创建一个实现了
MetaObjectHandler
接口的类:
import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
import org.apache.ibatis.reflection.MetaObject;
import org.springframework.stereotype.Component;
import java.util.Date;
@Component
public class MyMetaObjectHandler implements MetaObjectHandler {
@Override
public void insertFill(MetaObject metaObject) {
// 自动填充创建时间和创建人字段
this.strictInsertFill(metaObject, "createTime", Date.class, new Date()); // 创建时间
this.strictInsertFill(metaObject, "createUser", String.class, "system"); // 创建人
}
@Override
public void updateFill(MetaObject metaObject) {
// 自动填充更新时间和更新人字段
this.strictUpdateFill(metaObject, "updateTime", Date.class, new Date()); // 更新时间
this.strictUpdateFill(metaObject, "updateUser", String.class, "system"); // 更新人
}
}
- 在实体类中使用
@TableField
注解指定填充策略:
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.FieldFill;
import java.util.Date;
public class Entity {
// 其他字段...
@TableField(fill = FieldFill.INSERT)
private Date createTime;
@TableField(fill = FieldFill.INSERT)
private String createUser;
@TableField(fill = FieldFill.UPDATE)
private Date updateTime;
@TableField(fill = FieldFill.UPDATE)
private String updateUser;
// 省略getter和setter方法
}
- 确保你的MyBatis-Plus配置类中注册了
MyMetaObjectHandler
:
import com.baomidou.mybatisplus.core.injector.MetaObjectHandlerInjector;
import com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class MybatisPlusConfig {
@Bean
public MetaObjectHandlerInjector metaObjectHandlerInjector() {
return new MetaObjectHandlerInjector();
}
@Bean
public MybatisSqlSessionFactoryBean sqlSessionFactoryBean() {
MybatisSqlSessionFactoryBean sqlSessionFactoryBean = new Mybati
评论已关闭