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的使用"
都是必须要掌握的,多加练习

posted @ 2020-08-06 09:22  Patrick&Star  阅读(648)  评论(0编辑  收藏  举报