APIJSON Version/APIJSON 版本号
6.0.0
Database Type & Version/数据库类型及版本号
msyql8.0
Environment/环境信息
- JDK/基础库:1.8
- OS/系统:win11
APIAuto Screenshots/APIAuto 请求与结果完整截屏
评论传
Current Behavior/问题描述
怎么在对关联查询字段进行模糊匹配
Expected Behavior/期望结果
能够查询出模糊匹配的关联字段查询
Any additional comments?/其它补充说明?
No response
5条答案
按热度按时间fd3cxomn1#
改成
想要的结果就是不仅相等的82001能够查询,还能查询出182001 820010此类数据,但是目前没有找到相关查询方式
gjmwrych2#
请问怎么支持此类查询语法,为查询到相关内容;
guicsvcw3#
不支持你截屏那样拼接,你把被关联引用字段的值提前拼接成这样就行了,
可以用 SQL 函数
"@column": "concat('%',id,'%'):id"
或 APIJSON 远程函数
"id()": "wrapPercent(id)" // 假设你写了这个远程函数,return "%" + idVal + "%"
然后要用模糊搜索的关键词,看通用文档!
"userId$@": "User/id"
#36
ymdaylpp4#
还可以这样
http://apijson.cn/api/?type=JSON&json=%7B%22User%22%3A%7B%22%40column%22%3A%22id%2Cname%22%2C%22id%22%3A38710%7D%2C%22Moment%22%3A%7B%22content%25%24%40%22%3A%22%2FUser%2Fname%22%2C%22%40explain%22%3Atrue%7D%7D%0A
具体见
APIJSON/APIJSONORM/src/main/java/apijson/orm/AbstractSQLConfig.java
Lines 3512 to 3567 in 31b58e6
| | /**WHERE key LIKE 'value' |
| | * @param key |
| | * @param column |
| | * @param value |
| | * @return key LIKE 'value' |
| | */ |
| | @JSONField(serialize = false) |
| | publicStringgetLikeString(@NotNullStringkey, @NotNullStringcolumn, Stringvalue) { |
| | Stringk = key.substring(0, key.length() - 1); |
| | charr = k.charAt(k.length() - 1); |
| | |
| | charl; |
| | if (r == '%' || r == '' || r == '?') { |
| | k = k.substring(0, k.length() - 1); |
| | |
| | l = k.charAt(k.length() - 1); |
| | if (l == '%' || l == '' || l == '?') { |
| | if (l == r) { |
| | thrownewIllegalArgumentException(key + ":value 中字符 " + k + " 不合法!key$:value 中不允许 key 中有连续相同的占位符!"); |
| | } |
| | |
| | k = k.substring(0, k.length() - 1); |
| | } |
| | elseif (l > 0 && StringUtil.isName(String.valueOf(l))) { |
| | l = r; |
| | } |
| | |
| | if (l == '?') { |
| | l = 0; |
| | } |
| | if (r == '?') { |
| | r = 0; |
| | } |
| | } |
| | else { |
| | l = r = 0; |
| | } |
| | |
| | if (l > 0 || r > 0) { |
| | if (value == null) { |
| | thrownewIllegalArgumentException(key + ":value 中 value 为 null!key$:value 中 value 不能为 null,且类型必须是 String !"); |
| | } |
| | |
| | value = value.replaceAll("\\", "\\\\"); |
| | value = value.replaceAll("\%", "\\%"); |
| | value = value.replaceAll("\", "\\"); |
| | if (l > 0) { |
| | value = l + value; |
| | } |
| | if (r > 0) { |
| | value = value + r; |
| | } |
| | } |
| | |
| | returngetKey(column) + " LIKE " + getValue(key, column, value); |
| | } |
jgzswidk5#
自己多看文档多尝试,我现在在 GitHub 上可能一周只能回你一次消息,
如果需要及时的回复,请登记贵公司,加企业支持专群
#187