STS TDD회원조회 테스트(1)
member 서비스 구현
member 수를 가져오는 메소드를 가져와서 테스트
@BeforeEach : 각각의 테스트 메소드들이 실행되기 전에 실행되는 메소드
test 코드 생성하기
에러 상황을 만든 후 해결하기
주석처리 후 코드 작성하고 실행하면 fail
실패하는 상황을 만든 후 점차 하나씩 개발하면 된다.
성공하려면 0보다 큰 값을 리턴해야 하는 상황이라 0과 같은 값을 리턴하는 경우라서 fail
return 1로 바꾸니까 테스트 성공한 것을 확인할 수 있다.
그리고 다시 service로 넘어가자.
service는 다양한 비즈니스 로직을 처리하는 부분으로 DAO를 통해 데이터를 얻어오거나 변경한다.
여기에서는 회원 수를 조회하는 메소드이다.
jsbc를 직접 처리하지 않고, sqlsession object를 통해 데이터를 처리하므로 connection대신 sqlsession을 통해 dao에게 넘겨준다.
<import에 아래 두개 추가
1) static처리를 해서 클래스명을 생략가능
2) getsession사용하기
session도 사용 후 close => session.close();
DAO는 insert, update, delete를 하는 곳이다.
여기에서 SqlSession이 제공하는 session 메소드를 통해 호출해서 사용한다.
service object를 테스트하는 코드를 만들어보는 실습.
모든 회원 조회 테스트
import가 아닌 create
test가 아닌 min
package도 변경해준다.
생성 후 저장하고 다시 MemberServiceTest쪽에 가면 에러가 없어진 것을 확인
이런식으로 테스트 코드를 추가해준다.
이대로 실행하면 members에 null을 넣어뒀으니까 당연히 오류가 난다.
Date는 java.util로 import
return type 이 list object
이 상태에서 실행하면 아직 null 리턴으로 해둬서 실패뜬다.
이렇게 바꿔도 실제로 들어간 값이 없는 상태라 오류
연습을 위해서 다시 null 상태로 세팅
20230306 6교시
쿼리문 작성
resultType에 패키지명까지 적어야 오류가 안 난다.
테스트 성공 후
syso 통해서 console에서 출력 확인하기
쿼리문의수행 결과가 담긴 ResultSet은 ResultType의 인스턴스에 자동으로 mapping 되어 리턴된다.
단, 조회 결과의 컬럼명과 자바 클래스의 필드명이 동일해야 자동으로 mapping이 된다.(대소구분x)
방법1) 쿼리문에서 "AS"를 사용해서 별칭을 써 조회되는 컬럼명을 변경한다.
<<실행시키고자 하는 메소드가 있는 곳에서 화면 우클릭해서 run as로 실행시키자. (안 그러면 이상한 오류를 만날 수 있다.)
<<롬복은 끄고 설치 후 다시 실행해서 사용해야 어노테이션이 발동한다.
그런데, 이렇게 쿼리를 작성하면 유지보수적 측면에서 좋은 방법은 아니다.
방법2) resultMap을 이용해서 명시적으로 컬럼명과 필드명을 매핑
일단 별칭 AS붙였던 별칭 제거
아래 코드를 참고해서 작성해보자.
<!-- type 속성은 실제로 구현해 놓은 자바 클래스를 지정한다. -->
<resultMap type="Member" id="memberResultMap">
<id property="no" column="NO"/>
<result property="id" column="ID" />
<result property="password" column="PASSWORD"/>
<result property="email" column="EMAIL"/>
</resultMap>
mapper 바로 아래 최상단에 작성하는게 관례적이다.
..
담을 클래스타입
20230306(월)