• MyBatisPlus中使用@TableField完成字段自动填充


    需求:平时在做增删改查时,创建人,创建时间,更新人,更新时间,版本号这些字段是都有的,每次都写很麻烦,现在可以通过配置就可以不用管这些字段,写入表时这些字段自动填充

    1. 依赖
    # gradle
    compile 'com.baomidou:mybatis-plus-boot-starter:3.1.1'
    
    • 1
    • 2
    
    <dependency>
        <groupId>com.baomidougroupId>
        <artifactId>mybatis-plus-boot-starterartifactId>
        <version>3.1.1version>
    dependency>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    1. 基础类
    @Data
    public class BaseEntity {
        @TableId(value = "id",type = IdType.AUTO)
        public Long id;
     
        @TableField(fill = FieldFill.INSERT)
        private String createBy;
     
        @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
        @TableField(fill = FieldFill.INSERT)
        private Date createTime;
     
        @TableField(fill = FieldFill.INSERT_UPDATE)
        private String updateBy;
     
        @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
        @TableField(fill = FieldFill.INSERT_UPDATE)
        private Date updateTime;
     
        @TableField(fill = FieldFill.INSERT, update="%s+1")
        private Long version;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    1. 自动填充类
    /**
     * 自动补充插入或更新时的值
     * @author xl
     * @date 2019-06-03 18:26
     */
    @Component
    public class MybatisPlusMetaObjectHandler implements MetaObjectHandler {
     
     
        @Override
        public void insertFill(MetaObject metaObject) {
            this.setFieldValByName("createBy", CookieUtil.getLoginUser(),metaObject);
            this.setFieldValByName("createTime", new Date(),metaObject);
            this.setFieldValByName("updateBy", CookieUtil.getLoginUser(),metaObject);
            this.setFieldValByName("updateTime", new Date(),metaObject);
            this.setFieldValByName("version", Long.valueOf(1),metaObject);
            this.setFieldValByName("appSecret", UUID.randomUUID().toString().replaceAll("-",""),metaObject);
        }
     
        @Override
        public void updateFill(MetaObject metaObject) {
            this.setFieldValByName("updateBy", CookieUtil.getLoginUser(),metaObject);
            this.setFieldValByName("updateTime", new Date(),metaObject);
            this.setFieldValByName("version", this.getFieldValByName("version",metaObject),metaObject);
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • TableField
    描述
    value字段值(驼峰命名方式,该值可无)
    update预处理 set 字段自定义注入
    condition预处理 WHERE 实体条件自定义运算规则
    el详看注释说明
    exist是否为数据库表字段( 默认 true 存在,false 不存在 )
    strategy字段验证 ( 默认 非 null 判断,查看 com.baomidou.mybatisplus.enums.FieldStrategy )
    fill字段填充标记 ( FieldFill, 配合自动填充使用 )
    • 字段填充策略 FieldFill
    描述
    value字段值(驼峰命名方式,该值可无)
    update预处理 set 字段自定义注入
    condition预处理 WHERE 实体条件自定义运算规则
    el详看注释说明
    exist是否为数据库表字段( 默认 true 存在,false 不存在 )
    strategy字段验证 ( 默认 非 null 判断,查看 com.baomidou.mybatisplus.enums.FieldStrategy )
    fill字段填充标记 ( FieldFill, 配合自动填充使用 )
  • 相关阅读:
    SpringCloud-微服务CAP原则
    RDLC动态设置整个表格是否显示
    邦芒攻略:步入职场需要拥有的三种核心竞争力
    数字电路和模拟电路-4基本逻辑门电路
    驱动获取设备树节点信息
    UDP通信,Let‘s go!
    【小程序】页面跳转
    Docker下载Elasticsearch镜像并运行Elasticsearch容器
    【web-代码审计】(14.3)Java平台
    Colossal-AI
  • 原文地址:https://blog.csdn.net/ximaiyao1984/article/details/126227852