如果我在引号中有一堆东西,我会发现自己在做类似的事情:
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 子句,用单引号括住字符串,然后自己转义它们,这似乎很奇怪。必须有更好的方法!一些额外的上下文:我不希望查询太多(最多几十或几百行),只要我们不一次查询一行,优化就不是太大的问题!