mysql存json数据时的查询办法

很多时候mysql的一列当中存的是json格式的数据,这时候如果要查询某个key对应的值的时候要如何查询呢,这里记录一种查询方法:

json列的值:

{"InventoryMainTypeCode": 1, "InventoryMainTypeName": "GOOD"}

现在要查询InventoryMainTypeCode为xxx或者InventoryMainTypeName为xxx的数据:(这里以springboot+mybatis为例子)

代码:

请求类:

java 复制代码
Query query = new Query();
java 复制代码
@Data
public class Query implements Serializable {

    
    private Map<String, Object> featureMap = new HashMap<>();

    public void setFeature(String feature) {
        if (StringUtils.isNotBlank(feature)) {
            featureMap = JSON.parseObject(feature, Map.class);
        }
    }

    public void addFeature(String key, Object value) {
        if (StringUtils.isBlank(key)) {
            return;
        }
        this.featureMap.put(key, value);
    }
    public void addFeatureMap(Map<String, Object> featureMaps) {
        if (MapUtils.isNotEmpty(featureMaps)){
            this.featureMap.putAll(featureMaps);
        }
    }
}

在代码中将key添加到Feature中:

java 复制代码
query.addFeature(DicConst.InventoryMainTypeCode.name(), 1);
List<ResultDTO> dTOS = dictionaryManager.queryDicByParam(query);

mapper文件:

java 复制代码
 List<CnbDictionaryDO> queryDicByParam(CnbDictionaryQuery query);

xml:

xml 复制代码
  <select id="queryDicByParam" resultMap="BaseResultMap">
        select
        <include refid="Base_Column_List"/>
        from
        <include refid="Table_Name"/>
        <where>
            <if test="id != null">
                and id = #{id}
            </if>
         
            <if test="featureMap != null and featureMap.size > 0">
                <foreach collection="featureMap" index="key" item="value">
                    <if test="value != null">
                        <![CDATA[and feature->'$.${key}' = #{value}]]>
                    </if>
                </foreach>
            </if>
        </where>
    </select>
相关推荐
努力学习的小廉几秒前
【QT(九)】—— 窗口
数据库·qt·系统架构
程序员敲代码吗1 分钟前
用Python监控系统日志并发送警报
jvm·数据库·python
m5655bj2 分钟前
使用 C# 将 Excel 表格转换为 DataTable
数据库·c#
丁丁点灯o6 分钟前
帆软指定某个列连续相同的数值合并单元格
数据库
DBA小马哥8 分钟前
文档型数据库MongoDB迁移替换至金仓数据库在电商商品信息存储中的应用
数据库·mongodb
世界尽头与你9 分钟前
CVE-2025-14847_ MongoDB 未授权内存泄露漏洞
数据库·安全·mongodb·网络安全·渗透测试
小北方城市网12 分钟前
Redis 缓存设计与避坑实战:解决穿透 / 击穿 / 雪崩
java·大数据·数据库·redis·python·elasticsearch·缓存
心态还需努力呀32 分钟前
从 Oracle 到 KingbaseES:一次真实项目的数据库国产化迁移实录
数据库·oracle
枷锁—sha39 分钟前
【PortSwigger Academy】SQLi UNION 攻击 (确定列数)
服务器·数据库·学习·安全·网络安全
qq_3660862241 分钟前
sql server多字段字符串模糊查询存在字段null值查询失效问题
数据库