【MySQL】数据库中有个字段为JSON,需求:筛选JSON里面的字段

需求:写出mapper xml文件,我想要查找sys_data表中data字段,其中data字段是一个JSON,图二中的map参数,需要让JSON中的key与map中的key相等并且value也相等的数据

<select id="shit" resultType="com.example.SysData">
    SELECT *
    FROM sys_data
    WHERE docuId = #{docuId}
    <if test="map != null and map.size() > 0">
        <foreach item="value" index="key" collection="map">
            AND JSON_EXTRACT(data, CONCAT('$.', #{key})) = #{value}
        </foreach>
    </if>
</select>
  1. index属性的作用:
    • 在遍历集合时,index属性表示当前遍历到的元素的索引或键。
    • 对于List或数组,它代表元素的索引(从0开始)。
    • 对于Map,它代表当前元素的键(key)。
  2. item="value" 表示我们将Map的值赋值给变量"value"。
  3. JSON_EXTRACT 是一个MySQL函数,用于从JSON格式的数据中提取特定的值。这个函数在处理JSON数据时非常有用,特别是当你需要查询或操作存储在数据库中的JSON字段时。让我详细解释一下:
    1. 基本用法: JSON_EXTRACT(json_doc, path)
      • json_doc:JSON文档或JSON格式的字符串
      • path:用于指定要提取的值的路径
    2. 路径语法:
      • '$'表示整个JSON文档
      • '$.key’用于访问顶层的key
      • '$[0]'用于访问数组的第一个元素
      • '$.key1.key2’用于访问嵌套的JSON对象
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值