记录一下最近做的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 去查看文档,如下:
学习相应的例子,发现用在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.有大神做个吗,请指教。
标签:mabatis,实体类,springboot,查询,maven,json,levels,id,like 来源: https://blog.csdn.net/Retank/article/details/89887975