mysql数据库存数组类型数据,如何判断数组中是否包含某个值?使用mybatisplus查询。

跟mybatisplus中.in()方法相反的函数

mybatisplus的in函数:查询的是数据库的某个属性的值是否在给定的集合中。这里我们讲的是一个值是否在数据库的某个属性数组中。

说明:这是一张学生信息表,其中包含了学生曾经就读过的学校。现在我们要做的就是查询哪些学生就读过指定的学校,根据学校id。
数据库属性对应的结构:
在这里插入图片描述
现在数据库有三个学校id。

LambdaQueryWrapper<Student> wrapper = new LambdaQueryWrapper<>();
if (null != schoolId) {
            wrapper.apply("JSON_CONTAINS(school_id->\"$\", '[" + schoolId + "]')");
        }

1.Student的实体类中schoolId如下图:

在这里插入图片描述

2.Mapper里的类型如下图:

在这里插入图片描述

3.数据库类型可以选‘varchar’也可以选‘json’。这里使用的是varchar。

在这里插入图片描述

4.schoolId是传进来的参数,因为数据库存的就是中括号‘[]’类型的,所以代码里拼接也是用的[]。

5.如果还有跟其他条件,直接使用wrapper继续进行其他操作。

申明:这里我们讲的是mysql的json 数组类型,数组中保存的类型是Integer。像这样的:[1456,5642,13465]。如果需要处理其他结构类型的数据请移步到:

其他结构类型链接1
其他结构类型链接2

// List<Long> 存储 json 格式后的查询
.apply("JSON_CONTAINS(JSON_EXTRACT(order_id_list, '$.data[*]'), CONCAT('\"', {0}, '\"'))", orderId)
// List<Integer> 存储 json 格式后的查询
.apply("JSON_CONTAINS(JSON_EXTRACT(pass_node_codes, '$.data[*]'), {0})", passNode));

原文大致内容:
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值