Benannte Parameter für Spring-Beispiele in SimpleJdbcTemplate

Beispiele für Spring Named Parameters in SimpleJdbcTemplate

In JdbcTemplate werden SQL-Parameter durch ein spezielles Platzhalter-Symbol "?" dargestellt und nach Position gebunden. Das Problem ist, dass Sie bei jeder Änderung der Parameterreihenfolge auch die Parameterbindungen ändern müssen. Die Wartung ist fehleranfällig und umständlich.

Um dies zu beheben, können Sie „Named Parameter“ verwenden, während SQL-Parameter durch einen Start-Doppelpunkt gefolgt von einem Namen und nicht durch eine Position definiert werden. Darüber hinaus werden die genannten Parameter nur inSimpleJdbcTemplate undNamedParameterJdbcTemplate unterstützt.

In den folgenden drei Beispielen werden benannte Parameter in Spring verwendet.

Beispiel 1

Beispiel, das Ihnen zeigt, wie benannte Parameter in einer einzelnen Einfügeanweisung verwendet werden.

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

    }

Beispiel 2

Beispiele, die zeigen, wie benannte Parameter in einer Stapeloperationsanweisung verwendet werden.

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

Beispiel 3

Ein weiteres Beispiel für die Verwendung benannter Parameter in einer Stapeloperationsanweisung.

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

    }

Quellcode herunterladen

Laden Sie es herunter -Spring-JDBC-Named-Parameter-Example.zip (15 KB)