Spec-Zone .ru
спецификации, руководства, описания, API
|
Spring делает широкое применение шаблона разработки метода Template (см. JdbcTemplate
и связанные классы,
определенно NamedParameterJdbcTemplate
. Получение дескриптора шаблонных классов и
выпуск соединения для доступа к данным, когда каждый необходим.
Следующий пример показывает, как использовать NamedParameterJdbcTemplate
в DAO
(Объект Доступа к данным) class, чтобы получить случайный город, данный код страны.
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
запрашивать для города. Код
страны помещается в Карту с ключевой "страной", которая является параметром, называется в 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));
Этот пример показывает, как использовать классы Spring JDBC абсолютно абстрактного далеко использование
традиционных классов JDBC включая Connection
и PreparedStatement
.