内置插件
目前MP已经存在的内部插件包括如下:
插件类名 | 作用 |
---|---|
PaginationInnerInterceptor | 分页插件。可以代替以前的PageHelper |
OptimisticLockerInnerInterceptor | 乐观锁插件。用于幂等性操作,采用版本更新记录 |
DynamicTableNameInnerInterceptor | 动态表名 |
TenantLineInnerInterceptor | 多租户 |
IllegalSQLInnerInterceptor | sql 性能规范 |
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/