차근차근 한걸음씩 개발 일기
[Spring] - NamedParameterJdbcTemplate 본문
* 백엔드 개발자를 위한 한 번에 끝내는 대용량 데이터 & 트래픽 처리 초격차 패키지
=> Part1 / Ch 04 / 02. 회원정보 등록 구현
JdbcTemplate 관련 내용 URL
https://bibi6666667.tistory.com/300
NamedParameterJdbcTemplate : 기존 jdbc는 변수 매핑을 ?을 대신해서 객체에서는 변수 매핑을 이름을 통해서 하는 것이 가능하다. SQL문에 여러 파라미터를 가지고 있을 때 특히 유용하다.
사용하기 위해서는 DB와 연결된 dataSource와 연결되어져 있어야한다.
NamedParamterJdbcTemplate는 기본적으로 변수를 Map 객체를 통해서 받아 적용시킨다.
- NamedParameterJdbcTemplate.queryForObject(sql,params(Map),rowMapper) : 한줄의 열을 처리함
- NamedParameterJdbcTemplate.query(sql,params,rowMapper) : 여러 줄을 처리하고 리턴
- NamedParameterJdbcTemplate.update(sql,params,rowMapper) : delete,insert,update 등을 처리하는 메소드
예제
@RequiredArgsConstructor
@Repository
public class MemberNicknameHistoryRepository {
final private NamedParameterJdbcTemplate namedParameterJdbcTemplate;
private MemberNicknameHistory insert(MemberNicknameHistory history) {
SimpleJdbcInsert simpleJdbcInsert = new SimpleJdbcInsert(namedParameterJdbcTemplate.getJdbcTemplate())
.withTableName(TABLE)
.usingGeneratedKeyColumns("id");
SqlParameterSource params = new BeanPropertySqlParameterSource(history);
var id = simpleJdbcInsert.executeAndReturnKey(params).longValue();
return MemberNicknameHistory
.builder()
.id(id)
.memberId(history.getMemberId())
.nickname(history.getNickname())
.createdAt(history.getCreatedAt())
.build();
}
}