mybatis plus自动填充功能整合

自动填充,意味着就是设置默认值,不依赖数据库设置默认值,依赖程序实现。
首先定义自动填充字段

/**
     * 创建时间
     */
    @TableField(fill = FieldFill.INSERT)
    private Date createTime;

    /**
     * 修改时间
     */
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private Date updateTime;
    /**
     * 逻辑删除
     */
    @TableField(fill = FieldFill.INSERT)
    @TableLogic
    private Integer deleteFlag;

然后定义组件:
逻辑删除组件,手动覆盖sqlInjector组件:

 @Bean
    public ISqlInjector sqlInjector() {
        return new LogicSqlInjector();
    }

自动填充组件声明:
⚠️:使用@Component声明组件

@Component
public class MyMetaObjectHandler implements MetaObjectHandler {

    private static final Logger LOGGER = LoggerFactory.getLogger(MyMetaObjectHandler.class);
    
    // 新增的时候自动填充
    @Override
    public void insertFill(MetaObject metaObject) {
        LOGGER.info("start insert fill ....");
        this.setFieldValByName("createTime",new Date(),metaObject);
        this.setFieldValByName("updateTime", new Date(), metaObject);
        this.setFieldValByName("deleteFlag", 0, metaObject);
    }

	// 更新的税后自动填充
    @Override
    public void updateFill(MetaObject metaObject) {
        LOGGER.info("start update fill ....");
        this.setFieldValByName("updateTime", new Date(),metaObject);
    }
}

顺便记录一下打印sql语句的组件

/**
     * 打印 sql
     */
    @Bean
    public PerformanceInterceptor performanceInterceptor() {
        PerformanceInterceptor performanceInterceptor = new PerformanceInterceptor();
        //格式化sql语句
        Properties properties = new Properties();
        properties.setProperty("format", "true");
        performanceInterceptor.setProperties(properties);
        return performanceInterceptor;
    }

参考官方文档:

https://mp.baomidou.com/

你可能感兴趣的:(java)