引用符で囲まれたものがたくさんある場合、次のようなことをしていることに気づきます。
String sql = "SELECT col1, col2, col3 "
+ "FROM my_awesome_table "
+ "WHERE strValue IN (%s)";
sql = String.format(sql, COMMA_JOINER.join(Iterables.transform(strValues,
new Function<String, String>() {
@Override
public String apply(String input) {
return "'" + input.replaceAll("'", "''") + "'";
}
})));
List<ResultObject> resultObjects =
getSimpleJdbcTemplate().query(sql, resultObjectRowMapper());
しかし、独自の IN 句を作成し、文字列を一重引用符で囲み、自分でエスケープする必要があるのは奇妙に思えます。もっと良い方法があるはずです!いくつかの追加のコンテキスト: クエリを大量に (最大で数十または数百行) 行うことは期待していません。一度に 1 行ずつクエリを実行しない限り、最適化はそれほど重要ではありません。