各位大神好
最近再開發各種不同專案
每個寫到JAVA要轉譯SQL的時候每個用到套件都不太一樣
通常我都是寫了一大串SQL指令直接丟給JAVA直接執行處理即可
不用管太多,把查詢字串拼出來就對了
但是最近遇到這專案是用QueryParameter
他是一個把Select,Where,Join,order 給拆開來的JAVA查詢字串
大概像這樣
大概還看的出來他再幹嘛,因為查詢也只是很簡單的select where from
但如果我今天一旦查詢字串複雜起來了,需要join一些有的沒的...
我的這串param指令也沒辦法依照順序了,便會變的很複雜
於是我很天才想到了一個方法,我直接把查詢字串全部寫到select就好...
結果他在最後面給我加個from...
痾,看來是我想的太天真了
有人常組這種QueryParameter的嗎..
如果我想組出這種需要子查詢 join from 很多字串的SQL
該怎麼依序組出呢
例如:
QueryParameter queryParameter = new QueryParameter();
queryParameter.select("table1.column1, table2.column2");
queryParameter.from("table1, table2");
queryParameter.join("table3 ON table1.column3 = table3.column3");
queryParameter.join("table4 ON table2.column4 = table4.column4");
queryParameter.where("table1.column5 = 'value1'");
queryParameter.orderBy("table2.column6 DESC");
如果需要設定更複雜的子查詢,可以使用括號把子查詢括起來,例如:
queryParameter.from("(SELECT * FROM table1 WHERE column1 = 'value1') t1, table2");
queryParameter.join("(SELECT * FROM table3 WHERE column3 = 'value3') t3 ON t1.column3 = t3.column3");
上面的例子中,使用括號把子查詢括起來,再使用別名 t1 和 t3 來代表這些子查詢,以便在後面的查詢中使用。