公司开发中,遇到一个问题,数据库中保存一个字段用逗号拼接,前端传的是拼接的某个元素,用Wrapper.in(“字段名“,“前端传的值“),查询不出来

公司开发中,遇到一个问题,数据库中保存一个字段用逗号拼接,前端传的是拼接的某个元素,用Wrapper.in(“字段名”,“前端传的值”),查询不出来

问题具体描述:在公司开发中,前端有一个查询需求(分页查询,用的是mybatisplus,Wrapper()),其中有一个查询字段里面是列表数据,鉴于数据库没有List的数据类型,将数据用逗号拼接成字符串然后保存。
这样前端在查询的时候传过来的是某一个值,使用Wrapper.in();查询是查询不到的,因为数据库存的是字符串,而不是list,无法用in
有一个方法就是查询前,先将该字段,用逗号分割,转成list,但是由于本人比较固执,执意要用Wrapper的方法进行查询

经过本人研究,终于找到一个方法用queryWrapper.apply()的方式进行查询:

具体代码如下:

LambdaQueryWrapper<ClassInfo> queryWrapper = Wrappers.<ClassInfo>lambdaQuery();
 queryWrapper.apply(ObjectUtils.isNotEmpty(classInfoPageListDTO.getClassCatalogId()), 
 "FIND_IN_SET(" + classInfoPageListDTO.getClassCatalogId() + ",class_catalog_id)");

代码简单的解说一下:Apply()中的第一个字段是查询的条件,第二个字段是查询语句,括号里面的第一个字段是传过来的值,第二个字段是数据库的字段值。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值