5.MP中内置的插件

老马 老马 | 478 | 2022-07-29

内置插件

目前MP已经存在的内部插件包括如下:

插件类名作用
PaginationInnerInterceptor分页插件。可以代替以前的PageHelper
OptimisticLockerInnerInterceptor乐观锁插件。用于幂等性操作,采用版本更新记录
DynamicTableNameInnerInterceptor动态表名
TenantLineInnerInterceptor多租户
IllegalSQLInnerInterceptorsql 性能规范
BlockAttackInnerInterceptor防止全表更新与删除

分页插件【PaginationInnerInterceptor】

1.作用

用来支持分页查询。

2.支持的数据库

mysql,oracle,db2,h2,hsql,sqlite,postgresql,sqlserver等几乎市面上所有常用的数据库。

3.插件使用

  • 添加配置类

    @Configuration 
    public class MybatisPlusConfig { 
        @Bean 
        public MybatisPlusInterceptor mybatisPlusInterceptor() { 
            MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor(); 
            interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL)); 
            return interceptor; 
        } 
    }
    
  • 使用代码

    @Test 
    public void testPage(){ 
        //设置分页参数 
        Page<User> page = new Page<>(1, 5); 
        userMapper.selectPage(page, null); 
        //获取分页数据 
        List<User> list = page.getRecords(); 
        list.forEach(System.out::println); 
        System.out.println("当前页:"+page.getCurrent()); 
        System.out.println("每页显示的条数:"+page.getSize()); 
        System.out.println("总记录数:"+page.getTotal()); 
        System.out.println("总页数:"+page.getPages()); 
        System.out.println("是否有上一页:"+page.hasPrevious()); 
        System.out.println("是否有下一页:"+page.hasNext()); 
    }
    

乐观锁【OptimisticLockerInnerInterceptor】

乐观锁也称为无锁。更新时,通过加入版本号来进行更新。用来防止第二类丢失更新问题。

第二类丢失更新问题可以参考:3.springboot事务-4种隔离级别

1.配置类修改

@Configuration 
public class MybatisPlusConfig { 
    @Bean 
    public MybatisPlusInterceptor mybatisPlusInterceptor() { 
        //添加分页插件 
        interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL)); 
        //添加乐观锁插件 
        interceptor.addInnerInterceptor(new OptimisticLockerInnerInterceptor()); 
        return interceptor; 
    } 
}

2.需要修改实体类

@Data 
public class Product { 
    private Long id; 
    private String name; 
    private Integer price; 
    @Version 
    private Integer version; 
}

这个被@Version标识的字段就是版本,当然数据库中的字段不一定叫version。总之在更新的时候,sql语句会自动加上这个版本的条件。

其他内置插件

其他内置的插件,自行通过官网进行了解:https://baomidou.com/pages/2976a3/

文章标签: MybatisPlus
推荐指数:

真诚点赞 诚不我欺~

5.MP中内置的插件

点赞 收藏 评论