MybatisPlus实现分页查询和动态SQL查询的示例代码

 更新时间:2021年9月30日 16:00  点击:2505

一、描述

实现下图中的功能,分析一下该功能,既有分页查询又有根据计划状态、开始时间、公司名称进行动态查询。

在这里插入图片描述

二、实现方式

Controller层

   /**
     * @param userId        专员的id
     * @param planState     计划状态
     * @param planStartTime 计划开始时间
     * @param emtCode       公司名称-分身id
     * @return java.util.List<com.hc360.crm.entity.po.PlanCustomer>
     * @Author zhaoxiaodong
     * @Description 高级查询-根据计划状态、计划的时间、公司名称查询
     * @Date 9:04 2021/9/29
     */
    @PostMapping("/selectPlanByStateTimeCompany")
    public Page<CrmCustomerPlan> selectPlanByStateTimeCompany(@RequestParam(required = false,defaultValue = "1")int limit, @RequestParam(required = false,defaultValue = "1")int page, @RequestParam(required = true) Long userId,@RequestParam(required = false,defaultValue = "0") int planState,@RequestParam(required = false) String planStartTime,@RequestParam(required = false) Long emtCode) {
        //获取该专员下所有状态为未开始的计划
        List<CrmCustomerPlan> myPlanList = crmCustomerPlanService.selectNoStartPlan(userId);
        if (StringUtil.isNotEmpty(planStartTime)){
            //判断计划的开始时间和当前时间
            DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
            LocalDateTime planTime = LocalDateTime.parse(planStartTime, dtf);
            //存放已逾期的计划
            List<CrmCustomerPlan> overDuePlan = new ArrayList<>();
            for (CrmCustomerPlan customerPlan : myPlanList) {
                if (LocalDateTime.now().isAfter(planTime)) {
                    //当前时间在计划时间之后,说明过了计划时间,这时候我们要将它的状态改为已逾期
                    customerPlan.setPlanState(PlanStateEnum.OVERDUE.getCode());
                    overDuePlan.add(customerPlan);
                }
            }
            if (overDuePlan.size() > 0) {
                //遍历完之后,我们就可以对数据进行更改了
                crmCustomerPlanService.updateBatchById(overDuePlan);
            }
        }
        //接下来,就是对数据进行查询
        return crmCustomerPlanService.selectPlanByStateTimeCompany(limit,page,userId, planState, planStartTime, emtCode);
    }

在Controller中有limit、page。limit为每页限制的数量、page为第几页

Service层

    /**
    * @param userId
    * @return java.util.List<com.hc360.crm.entity.po.PlanCustomer>
    * @Author zhaoxiaodong
    * @Description 高级查询-根据计划状态、时间、公司名称查询
    * @Date 9:06 2021/9/29
    */
   @Override
   public Page<CrmCustomerPlan> selectPlanByStateTimeCompany(int limit,int page,Long userId, int planState, String planStartTime, Long emtCode) {
       Page<CrmCustomerPlan> pagelimit= new Page(page,limit);
       QueryWrapper<CrmCustomerPlan> crmCustomerPlanQueryWrapper = new QueryWrapper<>();
       crmCustomerPlanQueryWrapper.eq("create_user_id", userId);
       if (planState!=0){
           crmCustomerPlanQueryWrapper.eq("plan_state", planState);
       }
       if (StringUtil.isNotEmpty(planStartTime)){
           crmCustomerPlanQueryWrapper.eq("plan_start_time", planStartTime);
       }
       if (StringUtil.isNotEmpty(String.valueOf(emtCode))){
           crmCustomerPlanQueryWrapper.eq("emt_code", emtCode);
       }
       return crmCustomerPlanMapper.selectPage(pagelimit,crmCustomerPlanQueryWrapper);
   }

在Service层中,可以通过if和QueryWrapper实现动态SQL的查询。
分页,用到了Page对象,一定要是Mybatis的。然后调用selectPage,将对象和查询条件传入进去即可。

三、 总结

MybatisPlus是真的好用,省了我们写很多的SQL语句 以及配置信息
Mybatis的分页配置信息

  /**
   * 新的分页插件
   */
  @Bean
  public MybatisPlusInterceptor mybatisPlusInterceptor() {
      MybatisPlusInterceptor mybatisPlusInterceptor = new MybatisPlusInterceptor();
      mybatisPlusInterceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
      return mybatisPlusInterceptor;
  }

到此这篇关于MybatisPlus实现分页查询和动态SQL查询的示例代码的文章就介绍到这了,更多相关MybatisPlus 分页查询和动态SQL查询内容请搜索猪先飞以前的文章或继续浏览下面的相关文章希望大家以后多多支持猪先飞!

[!--infotagslink--]

相关文章

  • MyBatisPlus-QueryWrapper多条件查询及修改方式

    这篇文章主要介绍了MyBatisPlus-QueryWrapper多条件查询及修改方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...2022-06-27
  • MybatisPlus实现逻辑删除功能

    这篇文章主要介绍了MybatisPlus实现逻辑删除功能,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-12-25
  • 解决mybatisplus插入报错argument type mismatch的问题

    这篇文章主要介绍了解决mybatisplus插入报错argument type mismatch的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-11-25
  • MybatisPlus实现分页查询和动态SQL查询的示例代码

    本文主要介绍了MybatisPlus实现分页查询和动态SQL查询的示例代码,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2021-09-30
  • 一篇超详细的SpringBoot整合MybatisPlus的文章

    这篇文章主要介绍了springboot整合Mybatis-plus的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-07-27
  • springboot+mybatis plus实现树形结构查询

    实际开发过程中经常需要查询节点树,根据指定节点获取子节点列表,本文主要介绍了springboot+mybatis plus实现树形结构查询,感兴趣的可以了解一下...2021-07-22
  • SQL Server中row_number分页查询的用法详解

    这篇文章主要介绍了SQL Server中row_number的用法详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-12-08
  • SpringBoot+MyBatisPlus+MySQL8实现树形结构查询

    这篇文章主要为大家详细介绍了SpringBoot+MyBatisPlus+MySQL8实现树形结构查询,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2021-06-07
  • MVC+EasyUI+三层新闻网站建立 分页查询数据功能(七)

    这篇文章主要为大家详细介绍了MVC+EasyUI+三层新闻网站建立的第七篇,教大家如何分页查询出数据,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2021-09-22
  • ssm框架+PageHelper插件实现分页查询功能

    今天小编教大家如何通过ssm框架+PageHelper插件实现分页查询功能,首先大家需要新建一个maven工程引入jar包,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧...2021-06-10
  • MybatisPlus代码生成器的使用方法详解

    在这里我将展示如何自动生成实体类、控制层、服务层、mapper等代码,这些基础的代码全部不需要我们手动创建,由MybatisPlus自动帮我们完成,我们只需要告诉MybatisPlus怎么生成这些代码就可以了,在此之前我们需要配置好测试的环境,数据库和表数据,需要的朋友可以参考下...2021-06-13
  • mybatisplus的坑 insert标签insert into select无参数问题的解决

    这篇文章主要介绍了mybatisplus的坑 insert标签insert into select无参数问题的解决,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...2021-12-03
  • MySQL百万级数据量分页查询方法及其优化建议

    这篇文章主要介绍了MySQL百万级数据量分页查询方法及其优化建议,帮助大家更好的处理MySQL数据库,感兴趣的朋友可以了解下...2020-08-14
  • springboot集成mybatisPlus+多数据源的实现示例

    这篇文章主要介绍了springboot集成mybatisPlus+多数据源的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-12-26
  • springboot整合mybatis-plus实现多表分页查询的示例代码

    这篇文章主要介绍了springboot整合mybatis-plus实现多表分页查询的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-03-09
  • SpringBoot整合Mybatis Plus多数据源的实现示例

    本文主要介绍了SpringBoot整合Mybatis Plus多数据源的实现示例,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2021-11-04
  • MyBatisPlus使用@TableField注解处理默认填充时间的问题

    这篇文章主要介绍了MyBatisPlus使用@TableField注解处理默认填充时间的问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...2022-01-15
  • MyBatisPlus利用Service实现获取数据列表

    这篇文章主要为大家详细介绍了怎样使用IServer提供的list方法查询多条数据,这些方法将根据查询条件获取多条数据,感兴趣的可以了解一下...2022-06-17
  • Mybatis分页查询的实现(Rowbounds和PageHelper)

    本文主要介绍了Mybatis分页查询的实现(Rowbounds和PageHelper),文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2022-01-24
  • MybatisPlus使用聚合函数的示例代码

    本文主要介绍了MybatisPlus使用聚合函数的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2023-03-17