我想知道如何將對象列表綁定到sql中,其中'where'子句中具有多於1個參數。spring jdbctemplate - 如何綁定列表(包含多於1個參數)到查詢參數
Select * from order where order_id = ? and action_code = ?
數據就像
List<Order> orderList = new ArrayList<>();
orderList.add(1,"KP");
orderList.add(2,"DP");
orderList.add(3,"KP");
這裏是我試過 我的訂單列表。每個訂單都有訂單ID(長)和行爲代碼(字符串)。現在我需要查詢數據庫的訂單號和行動代碼作爲where子句中的參數。
選擇* from order where order_id =?和action_code =?。
我試圖在args中傳遞一個對象數組。 [這個工作]。
Object[] args = new Object[ size of orderList ]
int i = 0
for (Order order : orderList)
{
args[i] = new Object[]{order.getOrderId(), order.getActionCode()};
i++;
}
我射擊查詢,如下
jdbcTemplate.query(sql, args, rowMapper);
當我運行該應用程序,我得到下面的錯誤。
org.springframework.jdbc.UncategorizedSQLException: PreparedStatementCallback; uncategorized SQLException for SQL [SELECT * where ORD_I = ? AND ACT_C = ?]; SQL state [99999]; error code [17004]; Invalid column type; nested exception is java.sql.SQLException: Invalid column type
但是如果我通過數據如下它的工作原理
jdbcTemplate.query(sql, new Object[] {orderList.get(0).getOrderId, orderList.get(0).getActionCode()}, rowMapper);
我至今 我所提供的類型如下[DB中試過,ORDER_ID是數(38),action_code是Char(2))
int[] types = new int[] { java.sql.Types.NUMERIC, java.sql.Types.CHAR
};
jdbcTemplate.query(sql, args, types, rowMapper);
我得到了一個異常說。 [同樣的錯誤,當我與java.sql.Types.VARCHAR取代java.sql.Types.CHAR]
org.springframework.dao.InvalidDataAccessApiUsageException: args and argTypes parameters must match
的下方設置了作品
int[] types = new int[] { java.sql.Types.NUMERIC, java.sql.Types.CHAR
};
jdbcTemplate.query(sql, new Object[] {orderList.get(0).getOrderId, orderList.get(0).getActionCode()}, types, rowMapper);
下面我有問題 How set Array/List in Spring jdbcTemplate as parameter?簡稱 - 會談關於從列表中傳遞一個參數
how to bind a list of tuples using Spring JDBCTemplate? - 有關元組的討論。如果我必須查詢2 tableA.id = tableB.id和tableA.id =?和tableB.seq_id =?,那麼上述解決方案不起作用。
我搜索了很多,但現在我碰到了一個路障。請幫助。
對於遲到的迴應感到遺憾...遠離工作!!!!然而,由於「orderId」或「actionCode」關鍵字保持不變,數據在for循環中被覆蓋。如何去做這件事? –
查看我編輯的回覆,我試圖提出一個解決方案。 –
如果我有1000個orderid-acioncode對,那麼使用這種方法我需要激發1000個選擇查詢。會有很大的表現。不春天jdbc模板有任何功能,以適應這種情況下,或者我在這裏錯過了什麼?幫助深受讚賞。 –