MYSQL在5.7之后支持JSON了。最近做一个需求,是把动态报表结果存起来,然后展示。我把每一行的结果存为了JSON。前端需要排序,本来是以为做不了,让前端自己在当前页排序玩就行。- 后来想起来当前mysql库版本是5.7增加了json的支持,那么应该就可以按照JSON的key进行排序。说干就干,在网上找到了方法,很简单。只要用下面的表达式就可以了
data->'$."id"'
data是json格式的列名。id是json中的一个key。
- 开开心心的去试了试,不出意外的要出意外了,报了一个错误
参数不符合规范,不能进行查询。直接搜了一下,发现在starPage()方法中有个校验sql方法,不支持单引号、双引号、横线、大于号、中文。改了一下正则表达式就好了。 原来是
public static String SQL_PATTERN = "[a-zA-Z0-9_\\ \\,\\.]+"
改为
public static String SQL_PATTERN = "[$->\'\"\\u4E00-\\u9FA5a-zA-Z0-9_\\ \\,\\.]+"
后续 参数不合规范这个错误是自己写的,因为刚接手项目不太清楚。防sql注入的。 因为搜索用的好多特殊字符比如±%()之类的,所以单独写了一个if,判断如果是data->'$.这样格式的就直接通过,不是的话走原有判断。 记下来,方便自己以后查看。