Whiteship's Note

11.2.1. JdbcTemplate

Spring/Chapter 11 : 2007.04.17 16:07


- query() :: select 문 사용
사용자 삽입 이미지
위와 같이 다양한 query 메소드들을 제공하고 있습니다.

예제 코드들)
int rowCount = this.jdbcTemplate.queryForInt("select count(0) from t_accrual");

int countOfActorsNamedJoe
    = this.jdbcTemplate.queryForInt("select count(0) from t_actors where first_name = ?", new Object[]{"Joe"});

String surname = (String) this.jdbcTemplate
    .queryForObject("select surname from t_actor where id = ?", new Object[]{new Long(1212)}, String.class);

Actor actor = (Actor) this.jdbcTemplate.queryForObject(
    "select first_name, surname from t_actor where id = ?",
    new Object[]{new Long(1212)},
    new RowMapper() {

        public Object mapRow(ResultSet rs, int rowNum) throws SQLException {
            Actor actor = new Actor();
            actor.setFirstName(rs.getString("first_name"));
            actor.setSurname(rs.getString("surname"));
            return actor;
        }
    });

메소드에 들어가는 인자로 메소드를 구분할 수 있습니다.
(1) 문자열 하나만 들어가는 메소드는 그냥 쿼리문을 날리고 있습니다.
(2) 문자열과 객체 배열을 받는 메소드는 ? 에 매칭되는 인자를 배열로 넘깁니다. 좀 더 유연한 쿼리문을 작성할 때 사용할 수 있겠습니다.
(3) 클래스 타입을 넘기는 메소드는 쿼리의 결과가 해당 객체의 타입을 알려줍니다.
(4) RowMapper 콜백을 넘기는 메소드는 resultSet의 각 요소를 객체에 매핑하는 역할을 합니다.

- update() :: insert, update, delete 문 사용
사용자 삽입 이미지
사용법은 execute()랑 비슷합니다.

this.jdbcTemplate.update("insert into t_actor (first_name, surname) values (?, ?)", new Object[] {"Leonor", "Watling"});

this.jdbcTemplate.update("update t_actor set weapon = ? where id = ?", new Object[] {"Banjo", new Long(5276)});

this.jdbcTemplate.update("delete from orders"); // :)




'Spring > Chapter 11' 카테고리의 다른 글

11.4. Modeling JDBC operations as Java objects  (0) 2007.04.19
11.3. Controlling database connections  (0) 2007.04.18
11.2.2. NamedParameterJdbcTemplate  (0) 2007.04.17
11.2.1. JdbcTemplate  (0) 2007.04.17
Data access using JDBC  (0) 2007.04.16
top