分頁查詢
分頁查詢在網頁使用十分之多
- 原始的limit進行分頁
- pageHelper第三方插件
3. MP內置的分頁插件
導入配置
如何使用,官網的代碼如下
//分頁插件
@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;
}
當然我們的代碼用不了像這些默認500條的值,直接刪除即可,簡化后的代碼如下
//分頁插件
@Bean
public PaginationInterceptor paginationInterceptor() {
return new PaginationInterceptor();
}
怎樣分頁
直接使用page對象即可
//測試分頁查詢
@Test
public void testPage(){
//參數1:當前頁
//參數2:頁面大小
Page<Air> airPage = new Page<>(1,3);
airMapper.selectPage(airPage,null);
airPage.getCurrent();
airPage.getRecords().forEach(System.out::println);
}
分頁查詢
分頁查詢在網頁使用十分之多
- 原始的limit進行分頁
- pageHelper第三方插件
- MP內置的分頁插件
導入配置
如何使用,官網的代碼如下
//分頁插件
@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;
}
當然我們的代碼用不了像這些默認500條的值,直接刪除即可,簡化后的代碼如下
//分頁插件
@Bean
public PaginationInterceptor paginationInterceptor() {
return new PaginationInterceptor();
}
怎樣分頁
直接使用page對象即可
//測試分頁查詢
@Test
public void testPage(){
//參數1:當前頁
//參數2:頁面大小
Page<Air> airPage = new Page<>(1,3);
airMapper.selectPage(airPage,null);
airPage.getCurrent();
airPage.getRecords().forEach(System.out::println);
}
MP刪除操作
基本刪除
//測試刪除
@Test
public void testDeleteById(){
System.out.println(airMapper.deleteById(1L));
}
批量刪除
//測試刪除
@Test
public void testDeleteBatchId(){
System.out.println(airMapper.deleteBatchIds(Arrays.asList(1,2,3)));
}
根據map刪除
//測試刪除
@Test
public void testDeleteByMap(){
HashMap<String,Object> airMap = new HashMap<>();
airMap.put("id",4);
airMap.put("id",5);
System.out.println(airMapper.deleteByMap(airMap));
}
邏輯刪除
物理刪除: 從數據庫中直接移除
邏輯刪除: 在數據庫中沒有被移除,而是通過一個變量讓他失效!(deleted = 0 -> deleted = 1)
管理員可以查看被刪除的記錄!防止數據丟失,類似於回收站
測試一下:
- 在數據庫表中添加一個字段
- 在實體類中也添加一個字段
- 配置
#配置日志
mybatis-plus:
configuration:
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl #僅控制台輸出的日志
global-config:
db-config:
logic-delete-field: flag # 全局邏輯刪除的實體字段名,如果實體類上字段加過@TableLogic
# 就不需要配置這個,如果配置了默認也不會讀取yml里的,而是屬性上的注解
logic-delete-value: 1 # 邏輯已刪除值(默認為 1)
logic-not-delete-value: 0
測試刪除
實際上邏輯刪除就是更新操作
這個時候如果執行查詢等操作是無法查詢出來的,因為會在查詢條件中會自動拼接deleted = 0的條件
//測試邏輯刪除
@Test
public void testDeleteByLogic(){
HashMap<String,Object> airMap = new HashMap<>();
airMap.put("id",4);
System.out.println(airMapper.deleteByMap(airMap));
}
以上所有CRUD(加上我的上一篇)
https://www.cnblogs.com/chougoushi/p/13438912.html"MyBatisPlus配置日志,CRUD的使用"
都是必須要掌握的,多加練習