생성자jdbcTemplate는 인젝션을 받을 수 x, dataSource로 인젝션 받아야 함.
jdbcTemplate = new JdbcTemplate(dataSource);
위처럼 쓰면 스프링이 자동으로 dataSource 인젝션
(+)
생성자가 하나만 있을 경우 스프링 빈으로 등록할때 @Autowired 생략할 수 있음.
memberRowMapper()findById()에서 사용할 memberRowMapper()
alt+enter - Replace with lambda!람다식으로 변경해줌.
findById()jdbctemplate에서 qurey 날려서 결과를 memberRowMapper()을 통해 mapping 해주고, 리스트로 값을 받아서 optional로 반환함.(return result.stream().findAny();
)
jdbcMemberRepository 코드와 비교해보면 단 두줄로 구현함. (jdbcTemplate 라이브러리를 사용하는 이유)
save()SimpleJdbcInsert jdbcInsert = new SimpleJdbcInsert(jdbcTemplate);
SimpleJdbcInsert는 jdbcTemplate를 넘겨서 만드는데,
jdbcInsert.withTableName("member").usingGeneratedKeyColumns("id");
위처럼 코드를 짜면 query를 짤 필요가 없음.
테이블명(member), pk(id), name만 있으면 insert문을 만들 수 있음.
findByName(), findAll()
JdbcTemplate을 사용하도록 스프링 설정 변경(조립)
jdbctemplate버전에 db까지 연동한 test 잘 실행됨