记录一下最近做的springboot+mabatis+maven架构的项目中Mysql+json数据转换查询解决的办法

1.使用前端application/json数据映射到后端实体类(注解@requestbody);
2.传参中带json数据类,定义对应实体类中jsonobject和jsonarray对象;
3.实体类对应数据库表数据类型为json型;
那么问题来了,如何实现MySQL数据json数据的模糊查询,查MySQL文档https://dev.mysql.com/doc/refman/5.7/en/json.html?tdsourcetag=s_pcqq_aiomsg找到跳到 Searching and Modifying JSON Values 去查看文档,如下:
记录一下最近做的springboot+mabatis+maven架构的项目中Mysql+json数据转换查询解决的办法学习相应的例子,发现用在mybatis映射文件里好像无法识别,在navicat上也执行不了这种写法(有大神,请指教):

SELECT count(*) FROM pb_user WHERE group_id = 12 and levels like CONCAT(’"%’,JSON_EXTRACT(’[1]’, ‘$[0]’),’%"’)
执行不了,但是分开查就可以比如
先获取模糊查询的字符:

SELECT CONCAT(’"%’,JSON_EXTRACT(’[1]’, ‘$[0]’),’%"’);
–>输出 “%1%”

然后再查:

SELECT count(*) FROM pb_user WHERE group_id = 12 and levels like "%1%"

就能正确查询,所以就放弃这个方法了

4.所以想了另一个办法,直接在mapper文件中使用foreach,如下:
< foreach collection=“content.levels” item=“id” separator=" ">
< ![CDATA[
and levels like ‘%${id}%’
]]>
< /foreach>
5.这也是一种方法,可以用了,就可以了(levels是jsonarray的,jsonobject还没有说要模糊查询就先不管了);
6.有大神做个吗,请指教。

上一篇:封装linux几个操作


下一篇:Java 基础(递归 recursion 方法; 封装和隐藏)