2021-04-21

0421 jdbcTemplate학습!

 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로 가져올 수 있다. 

댓글 없음:

댓글 쓰기

0328 fdisk, mkfs, mount, fstab

 1. 하드디스크를 붙인다. 2. fdisk -l로 하드디스크를 확인한다.  - interactiive한 커맨드모드 사용하여 (m) 붙인 하드디스크의 파티셔닝을 한다.  - 마지막에 w를 해야 실제로 반영이 된다.  3. mkfs를 하여 어떤 파일시스...