新版Mybatis-Plus关于乐观锁插件、分页插件和逻辑删除插件遇到的问题

导读:本篇文章讲解 新版Mybatis-Plus关于乐观锁插件、分页插件和逻辑删除插件遇到的问题,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

我使用的是mybatis-plus3.5.1版本 ,使用老版本的插件,轻则没效果,重则报错

旧版分页、旧版乐观锁(错误)

//旧版
    @Bean
    public PaginationInterceptor paginationInterceptor() {
        PaginationInterceptor paginationInterceptor = new PaginationInterceptor();
        // 设置请求的页面大于最大页后操作, true调回到首页,false 继续请求  默认false
        // paginationInterceptor.setOverflow(false);
        // 设置最大单页限制数量,默认 500 条,-1 不受限制
        // paginationInterceptor.setLimit(500);
        // 开启 count 的 join 优化,只针对部分 left join
        paginationInterceptor.setCountSqlParser(new JsqlParserCountOptimize(true));
        return paginationInterceptor;
    }

新版Mybatis-Plus关于乐观锁插件、分页插件和逻辑删除插件遇到的问题

 新版分页与乐观锁

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.transaction.annotation.EnableTransactionManagement;

@MapperScan("com.zhao.mapper")//扫描我们的mapper文件夹
@EnableTransactionManagement //事务控制
@Configuration //配置类
public class MyBatisPlusConfig {

    @Bean
    public MybatisPlusInterceptor mybatisPlusInterceptor(){
        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
        //注册乐观锁插件
        interceptor.addInnerInterceptor(new OptimisticLockerInnerInterceptor());
        //分页插件
        interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
        return interceptor;
    }


}

在新的版本中移除了逻辑删除的插件注入(意思就是不用写java代码了)

需要在application.yaml或者application.properties中加入一下字段就可以使用

#    配置日志
mybatis-plus:
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
  # 配置逻辑删除
  global-config:
    db-config:
      logic-delete-value: 1  # 1 为逻辑删除后的字段
      logic-not-delete-value: 0  # 0 为没有逻辑删除的字段
      logic-delete-field: deleted  #对应实体类的字段 写了这个在实体类中就不需要写注解了

实体类

@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {
    // 对应数据库中的主键 (uuid、自增id、雪花算法、redis、zookeeper)
//    AUTO 是自增策略,在数据库中药开启自增
//    NONE 是未设置主键
//    INPUT 手动输入
//    ASSIGN_ID 全局唯一id 雪花算法
//    ASSIGN_UUID 全局唯一id uuid
    @TableId(type = IdType.ASSIGN_ID) //这是默认的创造id的方法:雪花算法
    private Long id;

    @TableField(value = "`name`")
    private String name;

    private Integer age;
    private String email;

    //字段添加填充内容
    @TableField(fill = FieldFill.INSERT)
    private Date createTime;
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private Date updateTime;

    //乐观锁  Version 注解
    @Version
    private Integer version;

//    @TableLogic //逻辑删除注解 在yaml中配置了就不用写注解了
    private Integer deleted;
}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/74781.html

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!