要传递的参数是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
的实例。