3
是否有任何方式來執行以下查詢:如何將一個List/Set/Array傳遞給Apache QueryRunner作爲參數值?
select * from table where field in (?)
並傳遞一個列表/組/陣列作爲?
佔位符的值。
我使用Apache db-commons庫中的QueryRunner。
是否有任何方式來執行以下查詢:如何將一個List/Set/Array傳遞給Apache QueryRunner作爲參數值?
select * from table where field in (?)
並傳遞一個列表/組/陣列作爲?
佔位符的值。
我使用Apache db-commons庫中的QueryRunner。
肯定有,使用createArrayOf:
final List<Integer> id = new ArrayList<>();
id.add(12);
id.add(15);
final Array toDelete = connection.createArrayOf("int", id.toArray());
queryRunner.query(
connection,
"SELECT * FROM table WHERE id = ANY(?)",
resultSetHandler,
toDelete
);
(例如是使用PostgreSQL,但也應該爲別人打工)
對於那些不熟悉,請出示代碼,所以我們知道API可用。 –
我相信你可以使用('value1','value2'),但是那些會在「in」之前出現,而'field'會在之後出現。 otdering可能是錯誤的。 – Rogue
我有一個很大的選擇查詢(〜35行),我的想法是將查詢存儲在類文件附近的資源文件中,讓它成爲'SearchController.java'和'SearchController.findClientByIp.sql'。這個大的查詢應該通過ip找到客戶端,或者一個ip地址列表。我不想每次構造查詢,即如果我有2個IP地址作爲輸入,則將查詢重寫爲'where ip in(?,?)'。這是我的控制器代碼片段http://pastebin.com/JV8KhxJG和sql代碼片段http://pastebin.com/tjVjBaZB – Kerb