美文网首页
对MYSQL中json数据格式的多对多匹配

对MYSQL中json数据格式的多对多匹配

作者: 摩羯座李 | 来源:发表于2018-08-24 10:50 被阅读367次

1. 背景介绍

项目框架使用的是spring boot+mybatisplus等构建,现在接口需求是通过标签(label)匹配相应
的作品,这里production里存的是label的多个id集合,Mysql数据格式为json格式,存储格式如下:

production表中label字段
现在接口需求是通过前端传过来的id数据进行对label的多对多匹配。

2. 难点

由于是多对多匹配,所以在xml中先进行数组转list后对list的遍历,然后通过MYSQL JSON函数(主要用到这两个方法:JSON_CONTAINS(tags, '["xxx"]');和JSON_EXTRACT())

JSON_CONTAINS(tags, '["xxx"]');      查找目标中是否包含xxx
JSON_EXTRACT(目标json字段,"\$.name");是JSON提取函数,$.name 指json数据中的key值(通过key提取目标json中的value)
xml中针对标签字段多对多查询语句

3.疑点

一开始是遇到这个问题:用短字符串可以匹配到数据,字符串太长就没数据。


两次查询结果不同,total应该都为1的

接下来找到问题所在是因为数据拼接的问题:


这是xml里定义的转换后的sql语句
去掉拼接,直接加参数,这样是有数据的

解决办法:

这里出现该问题的原因应该就是这个sql拼接的问题,由于传进来的是遍历过后的单值,所以这里参数就不需要加“[]”了,直接用json_contains()方法以单个字符串的形式进行匹配。


json_contains()不传数组类型参数

这样就避免了json_contains()参数传“拼接的数组”出现查不到数据的问题了,至于这个拼接个人后期还有待研究哪里出问题了。

相关文章

  • 对MYSQL中json数据格式的多对多匹配

    1. 背景介绍 项目框架使用的是spring boot+mybatisplus等构建,现在接口需求是通过标签(la...

  • mysql ---多对多

    flask的orm框架(SQLAlchemy)-一对多查询以及多对多查询(venv) $ pip install...

  • JSON

    JSON数据格式 JSON的概念 JSON全称JavaScript Object Notation,通过键值对存储...

  • mysql支持原生json使用说明

    MySQL在5.7.8开始对json原生支持,本文将对MySQL中json类型的用法简单说明,希望对你有用。 查看...

  • mysql json

    对mysql中json类型的字段查询操作

  • 02MySQL的多表操作

    MySQL的多表操作 1 多表关系 MySQL多表之间的关系可以概括为:一对一、一对多/多对一关系,多对多 1.1...

  • js报错

    请求的json数据格式有误,少括号,结束时多逗号等

  • MYSQL的一对多和多对一

    A、使用场景当前一个选修课,很多学生报名了这个课程,当我们查询这个选修课的时候,把对应的多个学生查询出来 2、数据...

  • golang中的json解析

    json 解码 首先我们构建一个常用的接口返回的json数据格式 main.go Golang解析json时候,多...

  • Flask 中的一对多和多对多

    1.ForeignKey flsk中的一对多 在多的一方需要写一个字段s_g 在其中写上db.ForeignKey...

网友评论

      本文标题:对MYSQL中json数据格式的多对多匹配

      本文链接:https://www.haomeiwen.com/subject/oboviftx.html