• MybatisPlus实现自动填充(表字段创建、修改时间自动填写)、version乐观锁


    mysql随机生成id

    @Data
    @AllArgsConstructor
    @NoArgsConstructor
    public class User {
        //@TableId(type = IdType.ID_WORKER) //mp自带策略,生成19位值,数字类型使用这种策略,比如long
        //@TableId(type = IdType.ID_WORKER_STR) //mp自带策略,生成19位值,字符串类型使用这种策略
        @TableId(type = IdType.ID_WORKER)
        private Long id;

    一、实体类加上注解

        //自动填充
        @TableField(fill = FieldFill.INSERT)
        private Date createTime;
    
        @TableField(fill = FieldFill.INSERT_UPDATE)
        private Date updateTime;

    二、加上消息处理机制类

    @Component
    public class MyMetaObjectHandler implements MetaObjectHandler {
        //使用mp实现添加操作,执行此方法
        @Override
        public void insertFill(MetaObject metaObject) {
            this.setFieldValByName("createTime",new Date(),metaObject);
            this.setFieldValByName("updateTime",new Date(),metaObject);
        }
    
        //使用mp实现修改操作,执行此方式
        @Override
        public void updateFill(MetaObject metaObject) {
            this.setFieldValByName("updateTime",new Date(),metaObject);
        }
    }

     三、version乐观锁

    实体类:

       @Version
        @TableField(fill = FieldFill.INSERT)
        private Integer version;//版本号

    消息处理机制类:(初始化version为1)

    @Component
    public class MyMetaObjectHandler implements MetaObjectHandler {
        //使用mp实现添加操作,执行此方法
        @Override
        public void insertFill(MetaObject metaObject) {
            this.setFieldValByName("createTime",new Date(),metaObject);
            this.setFieldValByName("updateTime",new Date(),metaObject);
    
            this.setFieldValByName("version",1,metaObject);
        }

    配置类:

    @Configuration
    public class Mpconfig {
        /**
         * 旧版
         */
        @Bean
        public OptimisticLockerInterceptor optimisticLockerInterceptor() {
            return new OptimisticLockerInterceptor();
        }

    测试类:(进行修改操作,version进行递增)

        //乐观锁
        @Test
        public void optimisticLockerTest(){
            User user = userMapper.selectById(1414578042713444353L);
            user.setName("小胡");
            userMapper.updateById(user);
        }
  • 相关阅读:
    15天玩转redis —— 第四篇 哈希对象类型
    15天玩转redis —— 第三篇 无敌的列表类型
    15天玩转redis —— 第二篇 基础的字符串类型
    15天玩转redis —— 第一篇 开始入手
    双十一来了,别让你的mongodb宕机了
    AutoIncrement无法设置的问题
    Frame animation
    Tween animation
    在project窗口中快速定位文件
    Activty左出右进动画
  • 原文地址:https://www.cnblogs.com/64Byte/p/15003956.html
Copyright © 2020-2023  润新知