如何有效地使用Spring的JDBCTemplate执行IN()SQL查询?我想知道是否有一种更优雅的方式来使用Spring的JDBCTemplate进行IN()查询。目前我做的是这样的:StringBuilder jobTypeInClauseBuilder = new StringBuilder();for(int i = 0; i < jobTypes.length; i++) {
Type jobType = jobTypes[i];
if(i != 0) {
jobTypeInClauseBuilder.append(',');
}
jobTypeInClauseBuilder.append(jobType.convert());}这是非常痛苦的,因为如果我有九行只是为IN()查询构建子句。我想要像准备语句的参数替换
3 回答
胡子哥哥
TA贡献1825条经验 获得超6个赞
你想要一个参数来源:
Set<Integer> ids = ...;MapSqlParameterSource parameters = new MapSqlParameterSource();parameters.addValue("ids", ids);List<Foo> foo = getJdbcTemplate().query("SELECT * FROM foo WHERE a IN (:ids)", parameters, getRowMapper());
这仅在getJdbcTemplate()
返回类型的实例时有效NamedParameterJdbcTemplate
qq_遁去的一_1
TA贡献1725条经验 获得超7个赞
自2009年以来,许多事情发生了变化,但我只能找到答案,说你需要使用NamedParametersJDBCTemplate。
对我来说,如果我只是做一个,它就有用
db.query(sql, new MyRowMapper(), StringUtils.join(listeParamsForInClause, ","));
使用SimpleJDBCTemplate或JDBCTemplate
添加回答
举报
0/150
提交
取消