当前位置: 首页 > article >正文

MyBatis-Plus自动填充

 数据库持久层配置类DataBaseConfiguration.java:

import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * 数据库持久层配置类
 */
@Configuration(value = "dataBaseConfigurationByAdmin")
public class DataBaseConfiguration {

    /**
     * 分页插件
     */
    @Bean
    @ConditionalOnMissingBean
    public MybatisPlusInterceptor mybatisPlusInterceptorByAdmin() {
        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
        interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
        return interceptor;
    }
}

填充规则MyMetaObjectHandler.java:

import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
import lombok.extern.slf4j.Slf4j;
import org.apache.ibatis.reflection.MetaObject;
import org.springframework.context.annotation.Primary;
import org.springframework.stereotype.Component;

import java.util.Date;


@Primary
@Component(value = "myMetaObjectHandlerByAdmin")
@Slf4j
public class MyMetaObjectHandler implements MetaObjectHandler {
    @Override
    public void insertFill(MetaObject metaObject) {
        log.info("开始插入填充...");
        this.strictInsertFill(metaObject, "createTime", Date::new,Date.class);
        this.strictInsertFill(metaObject, "updateTime", Date::new,Date.class);
        this.strictInsertFill(metaObject, "delFlag", ()->0, Integer.class);
    }

    @Override
    public void updateFill(MetaObject metaObject) {
        log.info("开始更新填充...");
        this.strictUpdateFill(metaObject, "updateTime", Date::new,Date.class);
    }
}

使用:

使用注解指定实体类中的某个字段在插入数据时需要进行自动填充。

@Data
public class BaseDO {
    /**
     * 创建时间
     */
    @TableField(fill = FieldFill.INSERT)
    private Date createTime;

    /**
     * 修改时间
     */
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private Date updateTime;

    /**
     * 删除标识 0:未删除 1:已删除
     */
    @TableField(fill = FieldFill.INSERT)
    private Integer delFlag;

}


http://www.kler.cn/a/501384.html

相关文章:

  • Servlet与JSP:Java的秘密花园入口
  • Elasticsearch学习(1) : 简介、索引库操作、文档操作、RestAPI、RestClient操作
  • qt-C++笔记之自定义继承类初始化时涉及到parents的初始化
  • Java面试核心知识4
  • 项目实战--网页五子棋(用户模块)(1)
  • C++实现设计模式---单例模式 (Singleton)
  • Node.js——fs(文件系统)模块
  • Android车机DIY开发之软件篇(九)默认应用和服务修改
  • gesp(C++四级)(16)洛谷:B4069:[GESP202412 四级] 字符排序
  • Oracle 23ai新特性:表值构造函数
  • 《自动驾驶与机器人中的SLAM技术》ch7:基于 ESKF 的松耦合 LIO 系统
  • 全栈面试(一)Basic/微服务
  • 基于django车牌识别系统(源码+lw+部署文档+讲解),源码可白嫖!
  • C++实现设计模式---模板方法模式 (Template Method)
  • Git的master 分支和main分支的区别是什么?使用场景是什么?底层原理是什么?
  • nginx负载均衡-基于端口的负载均衡(一)
  • 提升 PHP 编码效率的 10 个实用函数
  • 基于改进粒子群优化的无人机最优能耗路径规划
  • 大数据环境搭建进度
  • C# 正则表达式完全指南
  • 2025年华数杯国际赛B题论文首发+代码开源 数据分享+代码运行教学
  • 无人机电池技术引领低空经济新篇章!
  • 【网络云SRE运维开发】2025第2周-每日【2025/01/12】小测-【第12章 rip路由协议】理论和实操考试题
  • 【黑灰产】假钱包推广套路
  • SpringBoot项目实战(41)--Beetl网页使用自定义函数获取新闻列表
  • Linux随记(十四)