我有以下代码:
try {
MapSqlParameterSource parameters = new MapSqlParameterSource();
parameters.addValue("ids", year);
return this.template.getJdbcOperations().query(
"SELECT * FROM INCOME WHERE PROVNUM=? AND FISCALDATE IN ( :ids )", this.rowMapper, parameters);
} catch (EmptyResultDataAccessException ex) {
return null;
}
Run Code Online (Sandbox Code Playgroud)
但我无法发送PROVNUM的值.怎么做?
需要帮助,谢谢.
看起来你正在混合命名和位置参数.最好使用其中一个,但不能同时使用两者.
尝试
MapSqlParameterSource parameters = new MapSqlParameterSource();
parameters.addValue("ids", year);
parameters.addValue("provnum", provnum);
return this.template.getJdbcOperations().query(
"SELECT * FROM INCOME WHERE PROVNUM=:provnum AND FISCALDATE IN ( :ids )", this.rowMapper, parameters);
Run Code Online (Sandbox Code Playgroud)
在你的评论之后,我看到你正在使用该query()方法的错误重载:有很多可供选择,所以一些错误可以进入就不足为奇了!
你需要打电话
return this.template.getJdbcOperations().query(
"SELECT ... etc.", parameters, this.rowMapper);
Run Code Online (Sandbox Code Playgroud)
在原始调用中,您正在调用query(String sql, RowMapper mapper, Object... params)需要文字参数的版本.修改后的调用是查询(String sql,SqlParameterSource params,RowMapper mapper) - SqlParamtersSource作为第二个参数是键.另外,值得检查您使用的是NamedParameterJdbcTemplate.
只需使用“provnum”的命名参数即可:
String sql = "SELECT * FROM INCOME WHERE PROVNUM=:provnum AND FISCALDATE IN (:ids )"
MapSqlParameterSource parameters = new MapSqlParameterSource();
parameters.addValue("ids", year);
parameters.addValue("provnum", ...);
return template.getJdbcOperations().query(sql, rowMapper, parameters);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
14516 次 |
| 最近记录: |