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 字符串解析为 Map
        Map<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 = true
		page_n.value++
		let sk = page_n.value * 10
		await getOrder(sk,data.tab[re.value].query)
		loading.value = false
	})

相关推荐

  1. mybatisplus如何拼接动态sql

    2024-03-26 06:06:10       19 阅读
  2. 生成动态指定条件的拼接SQL

    2024-03-26 06:06:10       17 阅读
  3. mybatisPlus动态sql语句 ${ew.customSqlSegment}讲解

    2024-03-26 06:06:10       29 阅读
  4. SQL SERVER 不拼接SQL如何条件查询

    2024-03-26 06:06:10       36 阅读
  5. StringJoiner Sql拼接利器

    2024-03-26 06:06:10       26 阅读
  6. 关联拼接字段SQL

    2024-03-26 06:06:10       25 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-03-26 06:06:10       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-03-26 06:06:10       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-03-26 06:06:10       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-03-26 06:06:10       20 阅读

热门阅读

  1. macOS - 安装 b2 (Jamfile)

    2024-03-26 06:06:10       17 阅读
  2. ffmpeg把一个平面视频,做成左右平面视频

    2024-03-26 06:06:10       17 阅读
  3. ffmpeg重点之时间戳,PTS、DTS、time_base

    2024-03-26 06:06:10       15 阅读
  4. 【电脑装机】笔记本开机启动快捷键汇总

    2024-03-26 06:06:10       15 阅读
  5. centOS校准服务器时间

    2024-03-26 06:06:10       15 阅读
  6. C语言多服务器多播组网框架

    2024-03-26 06:06:10       17 阅读
  7. npm常用命令详解

    2024-03-26 06:06:10       20 阅读