MyBatisPlus分頁查詢,刪除操作


分頁查詢

分頁查詢在網頁使用十分之多

  1. 原始的limit進行分頁
  2. 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);
    }

分頁查詢

分頁查詢在網頁使用十分之多

  1. 原始的limit進行分頁
  2. 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);
    }

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)
管理員可以查看被刪除的記錄!防止數據丟失,類似於回收站

測試一下:

  1. 在數據庫表中添加一個字段
  2. 在實體類中也添加一個字段
  3. 配置
#配置日志
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的使用"
都是必須要掌握的,多加練習


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM