mybatisplus自动填充

Posted Y-wee

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mybatisplus自动填充相关的知识,希望对你有一定的参考价值。

mybatisplus自动填充

数据库表的创建时间、修改时间,这些个操作一遍都是自动化完成的,我们不希望手动更新。这时候自动填充便可以发挥作用了。

1、方式一

数据库级别(注意:不建议此方式,因为工作中不允许你修改数据库)

步骤

  • 在表中新增字段create_time, update_time,给字段赋予默认值,在需要更新的字段(update_time)选择更新
  • 在实体类增加对应属性

2、方式二

代码级别,建议使用

步骤

  • 在实体类需要自动填充的属性上加注解

    package com.yl.bean;
    
    import com.baomidou.mybatisplus.annotation.FieldFill;
    import com.baomidou.mybatisplus.annotation.IdType;
    import com.baomidou.mybatisplus.annotation.TableField;
    import com.baomidou.mybatisplus.annotation.TableId;
    import lombok.Data;
    import lombok.NoArgsConstructor;
    
    import java.io.Serializable;
    import java.util.Date;
    
    /**
     * 用户实体类
     */
    @Data
    @NoArgsConstructor
    public class User implements Serializable {
        @TableId(type=IdType.AUTO)
        private Integer id;
        private String name;
        private Integer age;
        private String email;
        @TableField(fill = FieldFill.INSERT )//插入数据时更新该字段
        private Date createTime;
        @TableField(fill = FieldFill.INSERT_UPDATE)//插入和修改时更新该字段
        private Date updateTime;
    }
    
    

    注意:数据库要有对应字段,不会自动给你生成字段

  • 编写处理器来处理自动填充注解

    package com.yl.handler;
    
    import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
    import lombok.extern.slf4j.Slf4j;
    import org.apache.ibatis.reflection.MetaObject;
    import org.springframework.stereotype.Component;
    
    import java.util.Date;
    
    /**
     * 自动填充处理器实现类
     */
    @Slf4j//配置日志输出,也可以不配置
    @Component
    public class MyMetaObjectHandler implements MetaObjectHandler {
        /**
         * 插入元对象字段填充(用于插入时对公共字段的填充)
         *
         * @param metaObject 元对象
         */
        @Override
        public void insertFill(MetaObject metaObject) {
            //日志输出
            log.info("start insert fill.....");
            //字段填充
            this.setFieldValByName("createTime",new Date(),metaObject);
            this.setFieldValByName("updateTime",new Date(),metaObject);
    
        }
    
        /**
         * 更新元对象字段填充(用于更新时对公共字段的填充)
         *
         * @param metaObject 元对象
         */
        @Override
        public void updateFill(MetaObject metaObject) {
            //日志输出
            log.info("start update fill.....");
            //字段填充
            this.setFieldValByName("updateTime",new Date(),metaObject);
        }
    }
    
    

以上是关于mybatisplus自动填充的主要内容,如果未能解决你的问题,请参考以下文章

MybatisPlus 快速构建MybatisPlus 原生mybatis(分页查询) 通用枚举 service 封装 自动填充

MybatisPlus的自动填充功能使用!

MybatisPlus字段自动填充配置

MybatisPlus全局自动填充配置 & 自定义类型处理器

MybatisPlus全局自动填充配置 & 自定义类型处理器

MybatisPlus全局自动填充配置 & 自定义类型处理器