zoukankan      html  css  js  c++  java
  • 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);
        }
  • 相关阅读:
    JMeter参数签名——Groovy工具类形式
    arthas进阶thread命令视频演示
    疫情期间,如何提高远程办公效率
    Groovy中的闭包
    arthas快速入门视频演示
    绑定手机号性能测试
    基于HTTP请求的多线程实现类--视频讲解
    合格的测试经理必备技能
    Error Code : 1064 You have an error in your SQL syntax; check the manual that corresponds to your My
    Navicat Premium怎么设置字段的唯一性(UNIQUE)?
  • 原文地址:https://www.cnblogs.com/64Byte/p/15003956.html
Copyright © 2011-2022 走看看