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<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]));
	}

示例 3

另一個例子,在一個批處理操作語句中使用命名參數。
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);

	}

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

上一篇: Spring SimpleJdbcTemplate batchUpdate()實例 下一篇: Spring+Hibernate+MySql實例