java sql参数_java-从SQL查询检索参数
您可以使用這種方法來做到這一點,在此替換掉每一個?在查詢中使用(.*),然后根據(jù)它創(chuàng)建一個模式.然后應用另一對具有實際值的字符串,然后打印出將按?動態(tài)創(chuàng)建的所有組中的值.存在于查詢字符串中.
這是執(zhí)行相同操作的Java代碼.
@H_403_6@// This map stores your paired queries where key stores the placeholder query and value stores the query having actual parameters.
Map pairMap = new HashMap<>();
pairMap.put("SELECT * FROM my_table t WHERE (t.attr1 = ? AND t.attr2 = ?) OR t.attr3= ?","SELECT * FROM my_table t WHERE (t.attr1 = 3 AND t.attr2 = 'str') OR t.attr3= 4");
pairMap.put("UPDATE my_table SET attr2 = ? WHERE attr5 = ?","UPDATE my_table SET attr2 = 'Is it true?' WHERE attr5 = 'What is it?'");
pairMap.forEach((k,v) -> {
System.out.println("For query: "+k);
k = k.replaceAll("([*+^$()\\[\\]{}])","\\\\$1"); // this escapes all the characters that have special meaning in regex so they get treated as literal characters
k = k.replaceAll("\\?","(.*)");
Pattern p = Pattern.compile(k);
Matcher m = p.matcher(v);
if (m.matches()) {
for (int i=0;i
System.out.println(m.group(i+1));
}
} else {
System.out.println("Didn't match");
}
System.out.println();
});
哪個打印,
@H_403_6@For query: SELECT * FROM my_table t WHERE (t.attr1 = ? AND t.attr2 = ?) OR t.attr3= ?
3
'str'
4
For query: UPDATE my_table SET attr2 = ? WHERE attr5 = ?
'Is it true?'
'What is it?'
如您所見,該代碼適用于占位符?的任何可變值.在查詢字符串中,并打印配對查詢中存在的所有具有實際值的值.
總結
以上是生活随笔為你收集整理的java sql参数_java-从SQL查询检索参数的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 蚊子为什么怕水袋呢?
- 下一篇: 怎么用PHP语句做出增改删查功能,mys