因为其中一个参数须要变化,因而写成:java
for(int key : ProvinceCity.PROMAP.keySet()){ sql = "select count(1) from watch_dealer where province=? " + brandSql.toString(); count = count(sql, key, param.toArray()); }
结果报错:Caused by: java.sql.SQLException: No value specified for parameter 3sql
count函数:函数
protected int count(String sql, Object... params) { if (sql == null || sql.equals("")) { return 0; } int total = GeliUtils.getDao().count(sql, params); return total; }
缘由:key和param被当成两个参数传入count里,因此提示找不到第三个参数测试
根本缘由:全部类都继承Object,以致于可变参数params将全部对象看成其对象spa
解决方法:code
1. 把key放入param列表里,只传一个param进去对象
2. 在count方法的可变参数前面增长一个参数key继承
测试方法:ci
public static void testVarParam(Object ...param){ for(Object str : param){ System.out.println(str); } } public static void main(String[] args) throws Exception { List<Object> param = new ArrayList<Object>(); param.add("a"); param.add("b"); testVarParam(param.toArray()); /* * output: * a * b */ testVarParam("c", param.toArray()); /* * output: * c * [Ljava.lang.Object;@6af62373 */ }