2008. 8. 26. 22:02
이전글(~2009)
Statement 쿼리에 매핑할 파라메터는 보통 '?'를 인자로 하는데 이는 직관적이지 못해서 의미있는 매핑을 위해 이름을 사용할수 있게한 JdbcTemplate 래퍼 클래스이다.
public int countOfActorsByFirstName(String firstName) {
String sql = "select count(0) from T_ACTOR where first_name = :first_name";
SqlParameterSource namedParameters = new MapSqlParameterSource("first_name", firstName);
return namedParameterJdbcTemplate.queryForInt(sql, namedParameters);
}
String sql = "select count(0) from T_ACTOR where first_name = :first_name";
SqlParameterSource namedParameters = new MapSqlParameterSource("first_name", firstName);
return namedParameterJdbcTemplate.queryForInt(sql, namedParameters);
}
예제에서 처럼 쿼리문 변수(sql)에 간단히 ':변수명' 형식으로 정의한후 MapSqlParameterSource로 해당 변수를 매핑하여 쿼리를 실행한다. 여기서 SqlParameterSource 대신 Map을 이용할수도 있다.
Map namedParameters = Collections.singletonMap("first_name", firstName);
또한 Map 대신에 Bean 객체를 이용할수도 있다.
public int countOfActorsByFirstName(String firstName) {
String sql = "select count(0) from T_ACTOR where first_name = :first_name";
Actor exampleActor = new Actor(firstName);
SqlParameterSource namedParameters = new BeanPropertySqlParameterSource(exampleActor);
return this.namedParameterJdbcTemplate.queryForInt(sql, namedParameters);
}
String sql = "select count(0) from T_ACTOR where first_name = :first_name";
Actor exampleActor = new Actor(firstName);
SqlParameterSource namedParameters = new BeanPropertySqlParameterSource(exampleActor);
return this.namedParameterJdbcTemplate.queryForInt(sql, namedParameters);
}
기억해 둘것은 NamedParameterJdbcTemplate 클래스는 JdbcTemplate클래스를 완전이 감싸고 있기 때문에 NamedParameterJdbcTemplate에서 언제든지 JdbcTemplate의 기능을 사용할수 있다.
'이전글(~2009)' 카테고리의 다른 글
[SpringJDBC] SimpleJdbcTemplate (0) | 2008.08.26 |
---|---|
[SpringJDBC] Batch (0) | 2008.08.26 |
[SpringJDBC] NamedParameterJdbcTemplate (0) | 2008.08.26 |
[SpringJDBC] JdbcTemplate (0) | 2008.08.26 |
[SpringJDBC] 개요 (0) | 2008.08.26 |
가고싶은 일주일간의 독서여행 (2) | 2008.08.26 |
댓글을 달아 주세요