繁体   English   中英

JdbcTemplate抛出java.sql.SQLException:

[英]JdbcTemplate throws java.sql.SQLException:

String query = "Select count(*) from product where date_added in (?)";

Object[] params = {dates}; //dates is a list of java.sql.Date

Long productCount = jdbcTemplate.queryForObject(query, params, Long.class);

最后一行抛出:

java.sql.SQLException:使用IN子句查询数据库时无法在java.util.ArrayList和JAVA_OBJECT之间进行转换

已经尝试过使用NamedParameterJdbcTemplate ,它要求列表中的引号,这可能会导致sql注入。 使用jdbcTemplate克服这个问题。

任何帮助表示赞赏。

你需要一个参数来源:

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类型的实例时有效。 还要确保将结果捕获到列表中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM