객체를 조회할 때는 결과를 객체로 매핑해야 하기 때문에 RowMapper를 사용해야 한다.
RowMapper를 사용하지 않을 경우
// 쿼리 날리기
ResultSet rs = stat.excuteQuery("SELECT * FROM USER");
// 결과값 가져오기
while(rs.next()) {
// user 객체에 값 저장
user = new User();
user.setId(rs.getInt(1));
user.setName(rs.getString(2));
user.setDescription(rs.getString(3));
// 리스트에 추가
userList.add(user);
}
사용 방법
mapRow 메서드
public User mapRow(ResultSet rs, int count) throws SQLException {
// ResultSet 값을 User 객체에 저장
User user = new User();
actor.setFirstName(resultSet.getString("name"));
actor.setLastName(resultSet.getString("description"));
// user 반환
return user;
};
람다식
(rs, count) -> new User(
rs.getString("name"),
rs.getString("description")
)
jdbcTemplate.queryForObject에 사용
Actor actor = jdbcTemplate.queryForObject(
"select first_name, last_name from t_actor where id = ?",
(resultSet, rowNum) -> {
Actor newActor = new Actor();
newActor.setFirstName(resultSet.getString("first_name"));
newActor.setLastName(resultSet.getString("last_name"));
return newActor;
},1212L);
참고