因爲其中一個參數須要變化,因而寫成: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 */ }