본문 바로가기
boostcource/boostcourse_web programming

Select

by sgyeong 2024. 7. 1.

데이터를 전달하기 위해 사용할 DTO를 만들어준다.

 

먼저 DTO를 만들기 위해 패키지를 만들어준다.

 

DTO는 객체를 이용해서 실제 해당 값을 넣거나 꺼내는 일을 수행할 것이기 때문에 getter, setter 메서드를 만들어준다.

object가 갖고 있는 메서드 중 toString 메서드가 있다. toString은 실제 객체가 가진 값을 문자열로 한 번에 보여줄 수 있다. toString을 사용해서 해당 객체의 값을 확인할 때 편하게 확인할 수 있다. 

 

 

DAO를 만들기 위해 패키지를 만들어준다.

 

 

쿼리문을 갖고 있는 RoleDaoSqls 클래스를 만들어준다.

클래스 안에 전체 상수로 하는 select sql문을 만들어준다. 

* 항상 상수는 모든 문자를 대문자로 쓰는 것이 관례이다. 또한 _ 를 이용해서 단어를 구분해준다.

 

 

다음으로 실제로 데이터를 액세스할 수 있는 object를 만들어준다.

 

jdbc템플릿은 바인딩할 때 ?를 사용한다. ?를 사용하면 sql문자열만 봤을때에는 어떤 값이 매핑되는지 알아보기 힘들다. 그렇기때문에 NamedParameterJdbcTemplate이 사용된다. NamedParameterJdbcTemplate은 이름을 이용해서 바인딩하거나 결과값을 가져올 수 있다. 

 

dataSource를 파라미터로 받아들인다. spring 4.3부터는 componentScan으로 객체를 찾았을때 기본 생성자가 없다면 자동으로 객체를 주입해준다. db config에서 bean으로 등록했던 dataSource가 파라미터로 전달이 되면 dataSource를 받아서 NamedParameterJdbcTemplate 객체를 생성하게 된다.

 

다음으로 select all 을 가져오는 메서드를 정의한다.

role을 여러 건 가져오기 위해 해당 롤을 List로 받아온다. Role을 담아서 가져오게 한다. 메서드의 이름은 항상 소문자로 한다. 

jdbc의 메서드 중 query 메서드를 사용한다. query메서드 안에 첫번째 파라미터는 쿼리문이다. 쿼리를 사용하기 위해 static import를 사용한다. static import를 사용하면 RoleDaoSqls 객체에 선언된 변수를 클래스 이름 없이 바로 가져다가 사용할 수 있다. 

두번째 파라미터에는 비어있는 map 객체를 선언한다. 

세번째 파라미터에는 rowMapper 객체를 전달한다. 세번째 파라미터는 select 각각의 결과를 dto에 저장하는 목적으로 사용하게 된다. BeanPropertyRowMapper 객를 이용해서 컬럼의 값을 자동으로 dto에 담아주게 된다.

 

* DBMS에서는 컬럼명에서 단어와 단어를 구분할 때  _를 사용한다. 

  Java에서는 단어와 단어를 구분할 때 카멜표기법을 이용한다.
  BeanPropertyRowMapper는 DBMS와 Java의 이름의 규칙을 맞춰주는 기능을 갖고 있다.

 

 

 약속된 어노테이션이 붙어있는 객체들을 찾아내서 일을 진행하기 위해  ApplicationConfig 클래스에 ComponentScan 어노테이션을 달아준다. 

 

 

실제 코드가 잘 동작하는지 확인하기 위해 main패키지에 테스트 하기 위한 클래스를 만들어준다.

'boostcource > boostcourse_web programming' 카테고리의 다른 글

Select, Delete  (0) 2024.07.06
Insert, Update  (0) 2024.07.02
Spring JDBC 실습  (0) 2024.06.30
Spring JDBC를 이용한 DAO 개발  (0) 2024.06.30
Spring JDBC  (1) 2024.06.30