2016-08-08 25 views
2

私は多くのプレースホルダを持つSQLクエリを持っていますが、動的に構築され、プレースホルダを置き換える値の配列を入れたいのです。配列のサイズは毎回異なる場合があります。配列はすべてのパラメータから順に構成されます。 SQL世代のSpringでjdbcTemplateの配列/リストをどのようにパラメータとして設定しますか?

return jdbcTemplate.query(Queries.someQuery, 
    new Object[] {/* Array must be here */}, 
    new ResultSetExtractor<List<String>>() { 
     @Override 
     public List<String> extractData(ResultSet resultSet) 
     } 
    }); 

例:

for (int j = 0; j < y; j++) { 
     conditionsBuilder.append("\n and p"+i+".object_id=o.object_id\n" + 
       " and p"+i+".attr_id =?\n" + 
       " and p"+i+".value =?\n"); 
     tablesBuilder.append(",patameters p"+i+" "); 
     i++; 
    } 
+1

は、クエリをしてください投稿することができますか? – johnnyaug

+0

@johnnyaug更新された質問 –

答えて

2

ArrayListを使用してください:

あなたは、彼らがクエリに表示される順番に値を追加する必要があり、あなたの forループでは
ArrayList<Object> values = new ArrayList<>; 

values.add(value); 

は、その後、配列にそれを回す:

return jdbcTemplate.query(query, values.toArray(), resultSetExtractor); 
0

ワンライナーとしてGuavaを使用する:

return jdbcTemplate.query(query, Lists.newArrayList(v1, v2).toArray(), rse); 
関連する問題