• MyBatisPlus(十九)自动填充


    说明

    自动填充指的是,当数据被 插入 或者 更新 的时候,会为指定字段进行一些默认的数据填充
    比如,插入时,会自动填充数据的创建时间更新时间;更新时,会自动填充数据的更新时间

    实现方式

    1. 配置处理器
    2. 为字段添加填充注解

    处理器:用来说明,在插入和更新时,为哪些字段设置什么样的值

    填充注解:用来说明,实体中的哪些字段开启自动填充。如果实体字段上没有添加注解,是不会自动填充的,即使字段名在处理器中设置了也不会生效。

    填充注解的示例:@TableField(fill = FieldFill.INSERT)

    在这里插入图片描述

    代码

    处理器

    package com.example.core.config;
    
    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) {
            Date date = new Date();
            this.strictInsertFill(metaObject, "createTime", () -> date, Date.class); // 起始版本 3.3.3(推荐)
            this.strictUpdateFill(metaObject, "updateTime", () -> date, Date.class); // 起始版本 3.3.3(推荐)
        }
    
    
        @Override
        public void updateFill(MetaObject metaObject) {
            this.strictUpdateFill(metaObject, "updateTime", Date::new, Date.class); // 起始版本 3.3.3(推荐)
        }
    
    }
    
    
    • 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

    填充注解

    package com.example.web.entity;
    
    import com.baomidou.mybatisplus.annotation.FieldFill;
    import com.baomidou.mybatisplus.annotation.TableField;
    import com.baomidou.mybatisplus.annotation.TableName;
    import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;
    import com.example.web.enumeration.GenderEnum;
    import lombok.Data;
    
    import java.util.Date;
    import java.util.List;
    
    @Data
    @TableName(autoResultMap = true)
    public class User {
        private Long id;
        private String name;
        private Integer age;
        private String email;
        private Integer deleted;
        private GenderEnum gender;
    
        @TableField(typeHandler = JacksonTypeHandler.class)
        private List<Integer> tags;
    
        @TableField(typeHandler = JacksonTypeHandler.class)
        private List<Contact> contacts;
    
        /**
         * 创建时间
         */
        @TableField(fill = FieldFill.INSERT)
        private Date createTime;
    
        /**
         * 更新时间
         */
        @TableField(fill = FieldFill.INSERT_UPDATE)
        private Date updateTime;
    
    }
    
    • 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
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41

    数据库模式

    在这里插入图片描述

    测试

    代码

        /**
         * 插入用户
         */
        @Test
        public void insert() {
            User user = new User();
            user.setId(15L);
            user.setName("吴一");
            user.setAge(29);
            user.setEmail("wuyi@example.com");
            user.setGender(GenderEnum.MALE);
    
            mapper.insert(user);
        }
    
    
        /**
         * 更新用户
         */
        @Test
        public void update() {
            User user = new User();
            user.setId(15L);
            user.setAge(30);
    
            mapper.updateById(user);
        }
    
    
        /**
         * 查询用户
         */
        @Test
        public void selectById() {
            User user = mapper.selectById(15L);
            log.info("user:{}", user);
        }
    
    • 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
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37

    插入数据

    在这里插入图片描述

    在这里插入图片描述

    更新数据

    在这里插入图片描述

    在这里插入图片描述

    查询数据

    在这里插入图片描述

  • 相关阅读:
    Bitmap实现原理&应用场景
    设计师必收藏的5个配色网站
    Kubernetes — 核心资源对象 — 网络
    uview的真机演示,微信小程序,当两个input框的时候,从一个input切换到两一个input的时候,键盘调不起来
    自行实现字符串转浮点数函数atof()
    面试常问CAS和ABA问题,你懂了吗?
    RabbitMQ工作模式-路由模式
    jwt解释
    tf.cond()
    ClickHouse在大数据领域应用实践
  • 原文地址:https://blog.csdn.net/sgx1825192/article/details/133871199