SimpleJdbcTemplateのSpring名前付きパラメータの例

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

        Map parameters = 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 List customers){

        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 List customers){

       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)