目录
3.使用mybatis-plus构造JSON解析的Wrapper
开发中会遇到某字段的类型为json格式
本文讲述如何解析json字段,并根据json中某一key值查询数据库中对应的数据
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字段如下
我们可以编写SQL找到指定的value
(2) 解析多层JSON
假设数据库某一JSON字段如下
编写SQL找到所有的name
会发现使用$**.key会找到所有key为name的字段,有时候这个结果不是我们想要的
我们可以使用这种形式,找到我们想找到的值(可点多层)
(3) 使用JSON函数作为where条件
3.使用mybatis-plus构造JSON解析的Wrapper
使用QueryWrapper的apply()方法把查询语句追加到条件后,会自动加上and关键字
String name = "lisi";
QueryWrapper queryWrapper = new QueryWrapper();
queryWrapper.apply("JSON_EXTRACT(test, '$.man2.name') = {0}", name);
本篇文章分享到这里就结束啦!
点个赞再走吧~