要传递的参数是int类型,数量不确定。
如果参数不确定,如何一次传递所有参数?

String SQL = "select * from table where enterprise_id in (?,?,?)";
int a,b,c = 1,2,3;//uncertain quantity
this.server.findBySql(SQL,a,b,c);


有没有一种好的方法来避免遍历参数和拼接查询语句?

最佳答案

我认为,传递列表的最简单方法是使用org.springframework.jdbc.core.namedparam.MapSqlParameterSource.MapSqlParameterSource(),它可以为准备好的语句采用任何类型的参数。

因此,根据您的情况,您可以像这样修改SQL以采用list参数:

String sql = "select * from table where enterprise_id in (:listOfInt)";.


然后将列表添加为参数:

MapSqlParameterSource sqlParams = new MapSqlParameterSource();
sqlParams.addValue("listOfInt", Arrays.asList(1,2,3));


将其传递给org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate实例以执行这样的查询,

this.namedParameterJdbcTemplate.queryForList(sql, sqlParams);


这为您提供了一个结果集,此外,这还假定您已在类级别创建了NamedParameterJdbcTemplate的实例。

09-10 23:37