row 단위로 result set을 매핑하기 위해 사용하는 JdbcTemplate의 가상 인터페이스
다음과 같이 RowMapper를 리턴하는 메소드 정의
private RowMapper<Member> memberRowMapper() {
return new RowMapper<Member>() {
// 참고: Optin + Enter -> replace lambda로 람다식으로 바꿀 수 있다.
@Override
public Member mapRow(ResultSet rs, int rowNum) throws SQLException {
Member member = new Member();
member.setId(rs.getLong("id"));
member.setName(rs.getString("name"));
return member;
}
};
}
다음과 같이 find 메소드에서 사용할 수 있다.
@Override
public Optional<Member> findById(Long id) {
List<Member> result = jdbcTemplate.query("select * from member where id = ?", memberRowMapper(), id);
return result.stream().findAny();
}
@Override
public Optional<Member> findByName(String name) {
List<Member> result = jdbcTemplate.query("select * from member where name = ?", memberRowMapper(), name);
return result.stream().findAny();
}
@Override
public List<Member> findAll() {
return jdbcTemplate.query("select * from member", memberRowMapper());
}