內置插件
目前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/