zoukankan      html  css  js  c++  java
  • 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的使用"
    都是必须要掌握的,多加练习

    我会写代码+代码改变世界=我会改变世界! 为什么要改变世界? 如果无法改变世界,那么,世界就会改变我......
  • 相关阅读:
    [原创]测试计划与测试方案区别
    [原创]什么是构建验证测试(BVT)
    [原创]什么是测试驱动开发?
    [原创]用TestDirector的测试管理的流程
    [原创]测试用例设计之"正面测试与和负面测试"
    [原创]测试用例设计之“因果图”法
    [原创]测试用例设计之“状态迁移图”法
    [转贴]测试工具自动化的最佳实践
    [原创]软件测试管理之“测试角色和职能”概述
    软件测试试题
  • 原文地址:https://www.cnblogs.com/chougoushi/p/13444249.html
Copyright © 2011-2022 走看看