JdbcTemplate
순수 Jdbc와 동일한 설정을 하면 된다.
JDBC API에서 본 반복 코드를 대부분 제거해준다. 하지만 SQL 은 직접 작성해야 한다.
**사용법 어노테이션 @Autowired 사용 (생성자가 싱글턴이라면 생략 가능)
1
2
3
4
5
6
7
private final JdbcTemplate jdbcTemplate;
@Autowired
public JdbcTemplateRepository(DataSource dataSource){
jdbcTemplate = new JdbcTemplate(dataSource);
}
회원 id 번호를 통해 회원을 찾는 예) 테이블 이름 : member
1
2
3
4
public List<Member> findbyId(Long id){
return jdbcTemplate.query("select * from member where id = ?", memberRowMapper(), id);
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
private RowMapper<Member> memberRowMapper() {
return new RowMapper<Member>(){
@Override
public Member mapRow(ResultSet rs, int rowNum) thorws SQLException{
Member member = new Member();
member.setId(rs.getLong("id"));
member.setId(rs.getLong("name"));
return member;
}
};
//람다식으로 변경가능
return (rs, rowNum) -> {
Member member = new Member();
member.setId(rs.getLong("id"));
member.setId(rs.getLong("name"));
return member;
};
}
SimpleJdbcInsert 사용 회원가입 예)
1
2
3
4
5
6
7
8
9
public Member save(Member member) {
SimpleJdbcInsert jdbcInsert = new SimpleJdbcInsert(jdbcTemplate);
jdbcInsert.withTableName("member").usingGeneratedKeyColumns("id");
Map<String, Object> parameters = new HashMap<>();
parameters.put("name", member.getName());
Number key = jdbcInsert.executeAndReturnKey(new MapSqlParameterSource(parameters));
member.setId(key.longValue());
return member;
}