'where'句に2つ以上のパラメータを持つオブジェクトリストをsqlにバインドする方法を知りたい。spring jdbctemplate - 1つ以上のパラメータで構成されるリストをクエリargsにバインドする方法
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句のパラメータとして注文IDとアクションコードでDBを照会する必要があります。
* from order from order_id =? action_code =?
argsにオブジェクトの配列を渡そうとしました。 [このdint仕事]。
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
それは私が[DBで、ORDER_IDは、数(38)で、これまで私は、以下のようなタイプを提供してきた を試してみましたが、何
jdbcTemplate.query(sql, new Object[] {orderList.get(0).getOrderId, orderList.get(0).getActionCode()}, rowMapper);
の作品次のように私はデータを渡す場合は、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
私は問題 How set Array/List in Spring jdbcTemplate as parameter?の下に言及している
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);
以下の設定の作品 - 交渉リストから1つのパラメータを渡すことについて
how to bind a list of tuples using Spring JDBCTemplate? - タプルに関する話。 tableA.id = tableB.idとtableA.id =を使って2つのテーブルをクエリしなければならない場合は?とtableB.seq_id =?の場合、上記の解決策は機能しません。
私はたくさんのグーグルで探せましたが、今は道路ブロックにぶつかりました。親切に助けてください。
遅く応答して申し訳ありません...仕事から離れていました。しかし、キー "orderId"または "actionCode"は同じままであるので、データはforループ中に上書きされます。これについてどうやって行くの? –
私の編集した応答をチェックして、私は解決策を提案しようとしました。 –
私は1000のオーダーIDとacioncodeのペアを持っているなら、このアプローチでは1000の選択クエリを起動する必要があります。大きなパフォーマンスヒットthts。 doesntのspring jdbcテンプレートには、このシナリオに対応するための機能がありますか、ここで何か不足していますか?助けを深く感謝します。 –