当前位置: 首页 > news >正文

mybatisplus如何拼接动态sql

为了让代码更通用,为了让代码更简洁,所以有时候我们需要把查询条件动态化
后端代码如下:

@GetMapping("/selectOrder")public R<Page> selectOrder(String openid,String query,int page, int pageSize){System.out.println("订单界面数据展示");System.out.println("接收到的openid,"+openid);System.out.println("接收到的query,"+query);System.out.println("接收到的page,"+page);System.out.println("接收到的pageSize,"+pageSize);//分页构造器Page<Xcx_2OrderData> pageInfo = new Page<>(page,pageSize);//条件构造器QueryWrapper<Xcx_2OrderData> queryWrapper = new QueryWrapper<>();queryWrapper.eq("openid",openid);// 当 query 不为空时,拼接上额外的查询条件// 使用 Hutool 将 query 字符串解析为 MapMap<String, Object> queryMap = JSONUtil.toBean(query, Map.class);// 遍历 Map,构造查询条件for (Map.Entry<String, Object> entry : queryMap.entrySet()) {String key = entry.getKey();Object value = entry.getValue();queryWrapper.eq(key, value);}// TODO 这里应该再加一个条件,因为用户如果进入支付输入密码界面的时候,这时候用户手机关机了// TODO 然后既不能微信通知中让我们改变其状态为未支付,也不能在前端取消支付时候也不会触发(也不能让我们改成未支付),这时候数据库// TODO 中的pay_success字段就是为null,而不是为待支付: not_pay字段,这会出现一个什么情况呢// TODO 就是说页面这种查全部可以查到,但是不属于其他四个任何一个分类,所以拼接pay_success字段不为null的值// TODO bububu,这里不拼接pay_success字段不为null的值了,直接给pay_success字段为null的值全部删掉即可QueryWrapper<Xcx_2OrderData> objectQueryWrapper = new QueryWrapper<>();objectQueryWrapper.isNull("pay_success");xcx_2OrderDataService.remove(objectQueryWrapper);//分页查询xcx_2OrderDataService.page(pageInfo,queryWrapper);return R.success(pageInfo);}

前端部分代码如下(requestApi是我封装的wx.request):

// 请求数据const res_order = reactive({order_data:[]})const {order_data} = toRefs(res_order)async function getOrder(sk,query){const openid = wx.getStorageSync('openid')//取出本地缓存的用户信息// const res = await db.collection('order_data').where(query).limit(10).skip(sk).orderBy('order_time','desc').get()const res =await requestApi('/selectOrder',{openid:openid,query:query,page:sk,pageSize:10})console.log(res)res_order.order_data = [...res_order.order_data,...res.data.records]}// 上拉加载let loading = ref(false)let page_n = ref(1)onReachBottom(async()=>{//onReachBottom只能在父组件才能触底loading.value = truepage_n.value++let sk = page_n.value * 10await getOrder(sk,data.tab[re.value].query)loading.value = false})

相关文章:

  • 13 React useEffect 详解
  • uniapp先显示提示消息再返回上一页
  • 数据结构刷题篇 之 【力扣二叉树基础OJ】详细讲解(含每道题链接及递归图解)
  • Python 进阶教程
  • 算法部署总结
  • math模块篇(七)
  • 【笔试】美团2023年秋招第1场笔试(后端数开软件方向)
  • Java基础语法(二)
  • 骗子查询系统源码
  • 在vue中使用echarts饼图示例
  • C++——vector类及其模拟实现
  • 微信小程序第四章总结
  • 前端 JS 压缩图片的思路(附源码)
  • Android-AR眼镜屏幕显示
  • 数字后端概念——FinFET/Nanosheet FET
  • hexo+github搭建个人博客
  • CAP理论的例子讲解
  • GraphQL学习过程应该是这样的
  • Koa2 之文件上传下载
  • PHP 小技巧
  • 分类模型——Logistics Regression
  • 给github项目添加CI badge
  • 快速体验 Sentinel 集群限流功能,只需简单几步
  • 罗辑思维在全链路压测方面的实践和工作笔记
  • 配置 PM2 实现代码自动发布
  • 前端知识点整理(待续)
  • 三栏布局总结
  • 设计模式走一遍---观察者模式
  • 什么软件可以提取视频中的音频制作成手机铃声
  • 使用 Xcode 的 Target 区分开发和生产环境
  • 一个项目push到多个远程Git仓库
  • 用jQuery怎么做到前后端分离
  • 你对linux中grep命令知道多少?
  • #162 (Div. 2)
  • #define
  • #NOIP 2014#day.2 T1 无限网络发射器选址
  • $$$$GB2312-80区位编码表$$$$
  • $(function(){})与(function($){....})(jQuery)的区别
  • ()、[]、{}、(())、[[]]等各种括号的使用
  • (安全基本功)磁盘MBR,分区表,活动分区,引导扇区。。。详解与区别
  • (附源码)springboot宠物管理系统 毕业设计 121654
  • (附源码)计算机毕业设计ssm电影分享网站
  • (三) diretfbrc详解
  • (算法)Game
  • (学习日记)2024.01.19
  • (一)使用IDEA创建Maven项目和Maven使用入门(配图详解)
  • (转)memcache、redis缓存
  • .[hudsonL@cock.li].mkp勒索加密数据库完美恢复---惜分飞
  • .bat批处理(十一):替换字符串中包含百分号%的子串
  • .Net 代码性能 - (1)
  • .Net开发笔记(二十)创建一个需要授权的第三方组件
  • /run/containerd/containerd.sock connect: connection refused
  • :O)修改linux硬件时间
  • [ 数据结构 - C++]红黑树RBTree
  • [BUUCTF]-PWN:[极客大挑战 2019]Not Bad解析