paoding-code / paoding-rose

paoding-rose 提供最好用的Java Web应用整体性框架。
Apache License 2.0
603 stars 343 forks source link

JADE中##sql拼接问题 #39

Open xugege opened 7 years ago

xugege commented 7 years ago

现象 当SQL中使用##拼接sql字符串时,如果sql语句中使用了in的sql语法,就会导致解析错误

查看源码 ReplacementIntercepter中的##解析的正则表达式有问题 final Pattern PATTERN = Pattern.compile("\{([a-zA-Z0-9_\.\:]+)\}|##\((.+)\)"); 这个正则表达式采用的是贪婪模式 如下sql update ##(:1) set status=:2 where id in (:3)

源码 while (matcher.find(start)) { String group = matcher.group(); String key = null; if (group.startsWith("{")) { key = matcher.group(1); } else if (group.startsWith("##(")) { key = matcher.group(2); //key = :1) set status=:2 where id in (:3 }

xuemengchaojiushiwo commented 6 years ago

我也发现这个问题了,有什么可以变通的方法吗?