为了解决这个问题,可以使用“命名参数”,sql参数是由一个冒号开始后续定义的名称,而不是位置。在另外的,命名参数只是在simplejdbctemplate类和namedparameterjdbctemplate支持。
//insert with named parameter public void insertnamedparameter(customer customer){ string sql = "insert into customer " + "(cust_id, name, age) values (:custid, :name, :age)"; map<string, object> parameters = new hashmap<string, object>(); parameters.put("custid", customer.getcustid()); parameters.put("name", customer.getname()); parameters.put("age", customer.getage()); getsimplejdbctemplate().update(sql, parameters); }
public void insertbatchnamedparameter(final list<customer> customers){ string sql = "insert into customer " + "(cust_id, name, age) values (:custid, :name, :age)"; list<sqlparametersource> parameters = new arraylist<sqlparametersource>(); for (customer cust : customers) { parameters.add(new beanpropertysqlparametersource(cust)); } getsimplejdbctemplate().batchupdate(sql, parameters.toarray(new sqlparametersource[0])); }
public void insertbatchnamedparameter2(final list<customer> customers){ sqlparametersource[] params = sqlparametersourceutils.createbatch(customers.toarray()); getsimplejdbctemplate().batchupdate( "insert into customer (cust_id, name, age) values (:custid, :name, :age)", params); }