千家信息网

如何编写MybatisPlus实现分页查询和动态SQL查询

发表于:2025-01-18 作者:千家信息网编辑
千家信息网最后更新 2025年01月18日,本篇内容主要讲解"如何编写MybatisPlus实现分页查询和动态SQL查询",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"如何编写MybatisPlus实
千家信息网最后更新 2025年01月18日如何编写MybatisPlus实现分页查询和动态SQL查询

本篇内容主要讲解"如何编写MybatisPlus实现分页查询和动态SQL查询",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"如何编写MybatisPlus实现分页查询和动态SQL查询"吧!

目录
  • 一、描述

  • 二、实现方式

  • 三、 总结

一、描述

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

二、实现方式

Controller层

   /**     * @param userId        专员的id     * @param planState     计划状态     * @param planStartTime 计划开始时间     * @param emtCode       公司名称-分身id     * @return java.util.List     * @Author zhaoxiaodong     * @Description 高级查询-根据计划状态、计划的时间、公司名称查询     * @Date 9:04 2021/9/29     */    @PostMapping("/selectPlanByStateTimeCompany")    public Page 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 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 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    * @Author zhaoxiaodong    * @Description 高级查询-根据计划状态、时间、公司名称查询    * @Date 9:06 2021/9/29    */   @Override   public Page selectPlanByStateTimeCompany(int limit,int page,Long userId, int planState, String planStartTime, Long emtCode) {       Page pagelimit= new Page(page,limit);       QueryWrapper 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查询"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

查询 时间 状态 动态 公司 名称 高级 专员 信息 内容 功能 对象 数据 方式 学习 配置 实用 更深 接下来 下图 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 笔记本如何连接服务器充当显示器 成人本科软件开发能进华为吗 齐诺网络技术工作室 德州漳卫南网络安全 软件开发个人工作报告 四川小孩子学英语的软件开发定制 sql数据库入门基础语法 苹果id退出服务器验证错误 服务器 占有率 设计数据库的会遇到什么问题 tidb数据库分布式 网络电视流媒体服务器一年多少钱 华为服务器添加nvme做系统 大连博远网络技术 建材企业为什么要入bim数据库 税务总局网络安全 网络安全应急预案明确预案的 网络安全工程师具体做什么 藻数据库 mps能设置数据库吗 虎扑软件开发人员 华为服务器打开机箱盖会断电吗 全民奇迹用户数据库在哪里 网络安全教育主题班会效果 南京信息网络技术报价 神经网络技术自动答题平台 网络安全技术与控制专业好吗 浙江师范大学网络技术学院 归属用户服务器型号 上海中友通信网络技术
0