Spec-Zone.ru › MySQL Connectors 1.0

15.1 Использование JdbcTemplate

Spring широко использует шаблон проектирования Template method (см. Шаблон Template Method). Наш непосредственный фокус будет на JdbcTemplate и связанных классах, конкретно на NamedParameterJdbcTemplate. Классы-шаблоны обрабатывают получение и освобождение соединения для доступа к данным, когда это необходимо.

Следующий пример демонстрирует, как использовать NamedParameterJdbcTemplate внутри класса DAO (объект доступа к данным) для получения случайного города, заданного кодом страны.

public class Ex2JdbcDao {
     /**
     * Data source reference which will be provided by Spring.
     */
     private DataSource dataSource;

     /**
     * Our query to find a random city given a country code. Notice
     * the ":country" parameter toward the end. This is called a
     * named parameter.
     */
     private String queryString = "select Name from City " +
        "where CountryCode = :country order by rand() limit 1";

     /**
     * Retrieve a random city using Spring JDBC access classes.
     */
     public String getRandomCityByCountryCode(String cntryCode) {
         // A template that permits using queries with named parameters
         NamedParameterJdbcTemplate template =
         new NamedParameterJdbcTemplate(dataSource);
         // A java.util.Map is used to provide values for the parameters
         Map params = new HashMap();
         params.put("country", cntryCode);
         // We query for an Object and specify what class we are expecting
         return (String)template.queryForObject(queryString, params, String.class);
     }

    /**
    * A JavaBean setter-style method to allow Spring to inject the data source.
    * @param dataSource
    */
    public void setDataSource(DataSource dataSource) {
        this.dataSource = dataSource;
    }
}

В приведенном коде основной упор делается на метод getRandomCityByCountryCode(). Мы передаём код страны и используем NamedParameterJdbcTemplate для запроса города. Код страны помещается в Map с ключом "country", который соответствует имени параметра в SQL-запросе.

Для доступа к этому коду необходимо настроить его в Spring, предоставив ссылку на источник данных.

<bean id="dao" class="code.Ex2JdbcDao">
    <property name="dataSource" ref="dataSource"/>
</bean>

На этом этапе мы можем просто получить ссылку на DAO из Spring и вызвать getRandomCityByCountryCode().

    // Create the application context
    ApplicationContext ctx =
    new ClassPathXmlApplicationContext("ex2appContext.xml");
    // Obtain a reference to our DAO
    Ex2JdbcDao dao = (Ex2JdbcDao) ctx.getBean("dao");

    String countryCode = "USA";

    // Find a few random cities in the US
    for(int i = 0; i < 4; ++i)
        System.out.printf("A random city in %s is %s%n", countryCode,
            dao.getRandomCityByCountryCode(countryCode));

Этот пример демонстрирует, как использовать классы JDBC Spring для полной абстракции от использования традиционных классов JDBC, включая Connection и PreparedStatement.

© 2025 Oracle
Licensed under the GPLv2 License.
https://docs.oracle.com/cd/E17952_01/connector-j-en/connector-j-usagenotes-spring-config-jdbctemplate.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API