Примеры именованных параметров 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)"; 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 КБ)