开发者

mybatis plus配置自动create_time和update_time方式

目录
  • myBATis plus配置自动create_time和update_time
    • 注意时间类型的转化
  • 总结

    mybatis plus配置自动create_time和update_time

    注意时间类型的转化

    mybatis plus配置自动create_time和update_time方式

    package com.ruoyi.framework.handler;
    
    import com.baomidou.mybatisphttp://www.devze.comlus.core.handlers.MetaObjectHandler;
    import org.apache.ibatis.reflection.MetaObject;
    import org.springframework.stereotype.Component;
    
    import Java.time.LocalDateTime;
    import java.time.ZoneId;
    import java.util.Date;
    
    /**
     * 自定义元对象处理器,用于在数据库操作中自动填充创建时间和更新时间。
     * @Component 注解表示该类是一个Spring Bean,可以被其他Bean依赖注入。
     */
    @Component
    public class MyMetaObjectHandler implements MetaObjectHandler {
    
        /**
         * 在插入数据时自动填充创建时间和更新时间。
         * @param metaObject 元对象,代表待插入的数据对象。
         * 使用反射机制,通过字段名设置字段值,实现创建时间和更新时间的自动填充。
         */
        @Override
        public void insertFill(MetaObject metaObject) {
            Date now = Date.from(LocalDateTime.now().atZone(ZoneId.systemDefault()).toInstant());
            this.setFieldValByName("createTime", now, metaObject);
            this.setFieldValByName("updateTime", now, metaObject);
        }
    
        /**
         * 在更新数据时自动填充更新时间。
         * @param metaObject 元对象,代表待更新的数据对象。
         * 使用反射机制,通过字段名设置字段值,实现更新时间的自动填充。
         */
        @Override
        public void updateFill(MetaObject metaObject) {
            Date now = Date.from(LocalDateTime.now().atZone(ZoneId.systemDefault()).toInstant());
            this.setFieldValByName("updateTime", now, metaObject);
        }
    }

    mybatis plus配置自动create_time和update_time方式

    package com.ruoyi.common.core.domain;
    
    import java.io.Serializable;
    import java.util.Date;
    import java.util.HashMap;
    import java.util.Map;
    
    import com.baomidou.mybatisplus.annotation.FieldFill;
    import com.baomidou.mybatisplus.annotation.TableField;
    import com.fasterXML.jackson.annotation.jsonFormat;
    import com.fasterxml.jackson.annotation.JsonIgnore;
    import com.fasterxml.jackson.annotation.JsonInclude;
    
    /**
     * Entity基类
     * 
     * @author ruoyi
     */
    public class BaseEntity implements Serializable
    {
       python private static final long serialVersionUID = 1L;
    
        /** 搜索值 */
        @JsonIgnore
        @TableField(exist=false)
        private String searchValue;
    
        /** 创建者 */
        private String createBy;
    
        /** 创建时间 TableField自动维护*/
        @TableField(fill = FieldFill.INSERT)
        @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
        private Date createTime;
    
        /** 更新者 */
        private String updateBy;
    
        /** 更新时间 TableField自动维护*/
        @TableField(fill = FieldFill.INSERT_UPDATE)
        @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
        private Date updateTime;
    
        /** 备注 */
        private String remark;
    
        /** 请求参数 */
        @JsonInclude(JsonInclude.Include.NON_EMPTY)
        @TableField(exist=false)
        private Map<String, Object> params;
    
        public String getSearchValue()
        {
            return searchValue;
        }
    
        public void setSearchValue(String searchValue)
        {
            this.searchValue = searchValue;
        }
    
        public String getCreateBy()
        {
            return createBy;
        }
    
        public void setCreateBy(String createBy)
        {
            this.createBy = createBy;
        }
    
        public Date getCreateTime()
        {
            return createTime;
        }
    
        public void setCreateTime(Date createTiwww.devze.comme)
        {
            this.createTime = createTime;
        }
    
        public String getUpdateBy()
        {
            return updateBy;
        }
    
        public void setUpdateBy(String updateBy)
        {
            this.updateBy = updateBy;
        }
    
        public Date getUpdateTime()
        {
            return updateTime;
        }
    
        public void setUpdateTime(Date updateTime)
        {
            this.updateTime = updateTime;
        }
    
        public String getRemark()
        {
            return remark;
        }
    
        public void setRemark(String remark)
        {
            this.remark = remark;
        }
    
        public Map<String, Object> getParams()
        {
            if (params == null)
            {
                params = new HashMap<>();
            }
            return params;
        }
    
        public void setParams(Map<String, Object> params)
        {
            this.params = params;
        }
    }
    package com.ruoyi.framework.config;
    
    import com.baomidou.mybatisplus.annotation.DbType;
    import com.baomido编程客栈u.mybatisplus.extension.plugins.MybatisPlusInterceptor;
    import com.baomidou.mybatisplus.extension.plugins.inner.blockAttackInnerInterceptor;
    import com.baomidou.mybatisplus.extension.plugins.inner.OptimisticLockerInnerInterceptor;
    import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    import org.springframe编程work.transaction.annotation.EnableTransactionManagement;
    
    /**
     * Mybatis Plus 配置
     *
     * @author ruoyi
     */
    @EnableTransactionManagement(proxyTargetClass = true)
    @Configuration
    public class MybatisPlusConfig
    {
        @Bean
        public MybatisPlusInterceptor mybatisPlusInterceptor()
        {
            MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
            // 分页插件
            interceptor.addInnerInterceptor(paginationInnerInterceptor());
            // 乐观锁插件
            interceptor.addInnerInterceptor(optimisticLockerInnerInterceptor());
            // 阻断插件
            interceptor.addInnerInterceptor(blockAttackInnerInterceptor());
            return interceptor;
        }
    
        /**
         * 分页插件,自动识别数据库类型 https://baomidou.com/guide/interceptor-pagination.html
         */
        public PaginationInnerInterceptor paginationInnerInterceptor()
        {
            PaginationInnerInterceptor paginationInnerInterceptor = new PaginationInnerInterceptor();
            // 设置数据库类型为mysql
            paginationInnerInterceptor.setDbType(DbType.MYSQL);
            // 设置最大单页限制数量,默认 500 条,-1 不受限制
            paginationInnerInterceptor.setMaxLimit(-1L);
            return paginationInnerInterceptor;
        }
    
        /**
         * 乐观锁插件 https://baomidou.com/guide/interceptor-optimistic-locker.html
         */
        public OptimisticLockerInnerInterceptor optimisticLockerInnerInterceptor()
        {
            return new OptimisticLockerInnerInterceptor();
        }
    
        /**
         * 如果是对全表的删除或更新操作,就会终止该操作 https://baomidou.com/guide/interceptor-block-attack.html
         */
        public BlockAttackInnerInterceptor blockAttackInnerInterceptor()
        {
            return new BlockAttackInnerInterceptor();
        }
    }

    总结

    以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程客栈(www.devze.com)。

    0

    上一篇:

    下一篇:

    精彩评论

    暂无评论...
    验证码 换一张
    取 消

    最新开发

    开发排行榜