解析数据库JSON字段并使用mybatis-plus构造Wrapper

目录

1.JSON的格式

(1) JSON字符串/数值/布尔

(2) JSON对象

(3) JSON数组

(4) JSON相互嵌套

2.使用SQL函数解析JSON字段

(1) 解析单层JSON

(2) 解析多层JSON

(3) 使用JSON函数作为where条件

3.使用mybatis-plus构造JSON解析的Wrapper


开发中会遇到某字段的类型为json格式

本文讲述如何解析json字段,并根据json中某一key值查询数据库中对应的数据

JSON格式化校验网站推荐

1.JSON的格式

JSON常见的格式有:JSON字符串,JSON数值,JSON对象,JSON数组等

(1) JSON字符串/数值/布尔

{
    "key1": "value",
    "key2": 123,
    "key3": true
}

(2) JSON对象

为{}嵌套{}

{
    "man1": {
        "name": "zhangsan",
        "age": 30
    },
    "man2": {
        "name": "lisi",
        "age": 40
    }
}

(3) JSON数组

为{}嵌套[]

{
    "key1": [11,22,33],
    "key2": ["aa","bb","cc"]
}

(4) JSON相互嵌套

{}和[]相互嵌套

[
    {
        "bioqd": "u6_6_rHV",
        "aozoauoviy": {
            "zrnvlmwlj": "sZyK19l"
        },
        "wlpvmqemrfx": [
            false,
            382058623.0778751,
            -850013890.0693079
        ]
    },
    [
        1954935399,
        [
            true,
            996041004.12616,
            "rB"
        ]
    ]
]

2.使用SQL函数解析JSON字段

认识了JSON的格式,下面讲述如何使用SQL函数解析数据库中JSON字段

用到的方法:JSON_EXTRACT(json_doc, path[, path] ...)

json_doc:指定要解析的数据库字段名

path[, path] ...:指JSON的结构,指定到你要找的key值

(1) 解析单层JSON

假设数据库某一JSON字段如下

解析数据库JSON字段并使用mybatis-plus构造Wrapper_第1张图片 

 我们可以编写SQL找到指定的value

解析数据库JSON字段并使用mybatis-plus构造Wrapper_第2张图片

(2) 解析多层JSON

假设数据库某一JSON字段如下

解析数据库JSON字段并使用mybatis-plus构造Wrapper_第3张图片

 编写SQL找到所有的name

解析数据库JSON字段并使用mybatis-plus构造Wrapper_第4张图片

 会发现使用$**.key会找到所有key为name的字段,有时候这个结果不是我们想要的

解析数据库JSON字段并使用mybatis-plus构造Wrapper_第5张图片

 我们可以使用这种形式,找到我们想找到的值(可点多层)

(3) 使用JSON函数作为where条件

解析数据库JSON字段并使用mybatis-plus构造Wrapper_第6张图片


3.使用mybatis-plus构造JSON解析的Wrapper

使用QueryWrapper的apply()方法把查询语句追加到条件后,会自动加上and关键字

        String name = "lisi";
        QueryWrapper queryWrapper = new QueryWrapper();
        queryWrapper.apply("JSON_EXTRACT(test, '$.man2.name') = {0}", name);

本篇文章分享到这里就结束啦!

点个赞再走吧~

你可能感兴趣的:(java,java,sql)