Примеры именованных параметров Spring в SimpleJdbcTemplate

Примеры именованных параметров Spring в SimpleJdbcTemplate

В JdbcTemplate параметры SQL представлены специальным символом-заполнителем «?» и привязывают его по позиции. Проблема в том, что всякий раз, когда изменяется порядок параметров, вам также необходимо изменить привязки параметров, это чревато ошибками и неудобно поддерживать его.

Чтобы исправить это, вы можете использовать «Named Parameter», тогда как параметры SQL определяются начальным двоеточием, за которым следует имя, а не позиция. Кроме того, названные параметры поддерживаются только вSimpleJdbcTemplate иNamedParameterJdbcTemplate.

См. Следующие три примера использования именованных параметров в Spring.

Пример 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 КБ)