1. jdbctemplate활용하기
1) query 메소드 : 모든것을 가져온다 selectAll
2) Iterable로 가져왔음(collection의 상위객체)
주의!! iterator와 Iterable은 완전히 다른녀석이다. iterator는 collection소속이아님!! java8로 오면서 collection을 좀더 쉽게 다룰수있게 되었고- 이녀석의 필요성이 다소 감소? 하지 않았을까 싶다(저는 그렇게 느꼈어요)
3) queryforObject : 1개 가져온다 select one
2. 아예 쌩으로 코딩했을땐(순수 jdbc)
하나하나 커넥션 연결하고,
ResultSet직접 만들어서 statement에 넣은 sql실행하고,
resultset에 직접 값을 하나하나 셋팅하고,
new 해서 빈 객체 만든다음,
다시 resultset을 뺑뺑돌리면서 (hasnext어쩌구) 값을 빼와서 - 객체에 저장했었다.
-> jdbctemplate을 이용해서 반복 코드를 줄인다.
https://velog.io/@seculoper235/RowMapper%EC%97%90-%EB%8C%80%ED%95%B4 <참고 사이트!!> 이해가 증진되었다.
3. 이때 중요한 것이 - rowMap이라는 메소드를 구현하는 것.
객체에 바인딩하기위해서는- 이 메소드를 구현해야해주어야한다.
query에넘기는 파라메터중 하나- rowMap인터페이스.
functionalinterface로서, 함수를 한개만 가지고 있다.
원래는 이 인터페이스의 함수를 구현한 클래스를 파라메터로 넘겨야 하는데-
자바8의 도움을 얻어서 이걸 람다로 넘길수도 있고.
함수로 넘길수도있다( 실은 함수자체를 넘기는게 아니고- 인터페이스를 구현한 것을 생략해서 함수를 넘기는 것처럼 보인다. )
교재에서는 this::mapToIngredient 라고- 메소드 참조를 이용해서 넘겼다.
구현을 새 클래스 안만들고 그냥 클래스안에서 해줘도 되는군...
메소드 참조하는 새로운 방식도 알게되었다. 클래스명::메소드이름
4. 이것을 autowired로 controller에 주입한다.
Iterable 을 stream이용해서 람다식 foreach로 가져올 수 있다.
댓글 없음:
댓글 쓰기