Spring SimpleJdbcTemplate類命名參數實例

在JdbcTemplate,這些SQL參數通過一個特殊的佔位符「?」符號表示,並通過位置綁定。現在的問題是,每當參數的順序發生了變化,你必須也要改變參數綁定,這是容易出錯,繁瑣的維護。

爲了解決這個問題,可以使用「命名參數」,SQL參數是由一個冒號開始後續定義的名稱,而不是位置。在另外的,命名參數只是在SimpleJdbcTemplate類和NamedParameterJdbcTemplate支持。

請參見下面的三個例子用來使用命名參數在Spring。

示例1

例子向您展示如何使用命名參數在一個 INSERT 語句。

//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);

}

示例 2

例子來說明如何使用命名參數在批處理操作語句。

public void insertBatchNamedParameter(final List 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\]));
}

示例 3

另一個例子,在一個批處理操作語句中使用命名參數。

public void insertBatchNamedParameter2(final List customers){

   SqlParameterSource\[\] params = 
    SqlParameterSourceUtils.createBatch(customers.toArray());

   getSimpleJdbcTemplate().batchUpdate(
    "INSERT INTO CUSTOMER (CUST\_ID, NAME, AGE) VALUES (:custId, :name, :age)",
    params);

}

下載源代碼 –  http://pan.baidu.com/s/1hqPrzJu