SimpleJdbcTemplateのSpring Named Parametersの例
JdbcTemplateでは、SQLパラメーターは特別なプレースホルダー「?」記号で表され、位置でバインドされます。 問題は、パラメーターの順序を変更するたびに、パラメーターのバインドも変更する必要があることです。エラーを維持するのは面倒で面倒です。
これを修正するには、「Named Parameter」を使用できますが、SQLパラメーターは、位置ではなく名前が続く開始コロンで定義されます。 さらに、名前付きパラメーターはSimpleJdbcTemplateおよびNamedParameterJdbcTemplateでのみサポートされます。
Springで名前付きパラメーターを使用するには、次の3つの例を参照してください。
例1
単一の挿入ステートメントで名前付きパラメーターを使用する方法を示す例。
//insert with named parameter public void insertNamedParameter(Customer customer){ String sql = "INSERT INTO CUSTOMER " + "(CUST_ID, NAME, AGE) VALUES (:custId, :name, :age)"; Mapparameters = new HashMap (); parameters.put("custId", customer.getCustId()); parameters.put("name", customer.getName()); parameters.put("age", customer.getAge()); getSimpleJdbcTemplate().update(sql, parameters); }
例2
バッチ操作ステートメントで名前付きパラメーターを使用する方法を示す例。
public void insertBatchNamedParameter(final Listcustomers){ String sql = "INSERT INTO CUSTOMER " + "(CUST_ID, NAME, AGE) VALUES (:custId, :name, :age)"; List parameters = new ArrayList (); for (Customer cust : customers) { parameters.add(new BeanPropertySqlParameterSource(cust)); } getSimpleJdbcTemplate().batchUpdate(sql, parameters.toArray(new SqlParameterSource[0])); }
実施例3
バッチ操作ステートメントで名前付きパラメーターを使用する別の例。
public void insertBatchNamedParameter2(final Listcustomers){ SqlParameterSource[] params = SqlParameterSourceUtils.createBatch(customers.toArray()); getSimpleJdbcTemplate().batchUpdate( "INSERT INTO CUSTOMER (CUST_ID, NAME, AGE) VALUES (:custId, :name, :age)", params); }
ソースコードをダウンロード
ダウンロード–Spring-JDBC-Named-Parameter-Example.zip(15 KB)