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);
        }
  • 相关阅读:
    关于 “支持“XXXDBContext”上下文的模型已在数据库创建后发生更改。请考虑使用 Code First 迁移更新数据库” 的解决办法
    ASP.NET MVC 添加Model并连接到本地数据库
    C#中的if if...和if-else if
    Git和Github的使用教程
    JavaEE和Tomcat环境
    将windows系统新建的文本文档默认编码为UTF-8
    WIN10缺少.NET Framework3.5解决办法
    上传图片预览设置src不显示
    IOS new Date() 时间转换失败问题以及其他问题
    是否支持css3
  • 原文地址:https://www.cnblogs.com/64Byte/p/15003956.html
Copyright © 2011-2022 走看看