remind :
test 이름 정하기 : test하기 원하는 메소드 + test(명명규칙)
추가 : 수업시간에 table 값이 5개에서 → 16개로 증가하였다. 데이터 베이스의 값이 변동하면, assertEquals 값에 넣을 userList.size() 가 변경 되기 때문에 16을 넣어줘야 한다.
→ 알수 있는 것 :
** 데이터베이스의 값처럼 외부에 의존하고 있는 데이터를 가지고 있는 것들을 Test 하기 힘들다. 값이 동적으로 계속 변경되고 그값으로 test를 하는것이 어려울 수 있다.

UserDaoI 객체 선언 UserDao() 객체생성
parameter 로 넘겨줄 값 : userid 인 brown
userDao 에 있는 selectUser() 메소드를 userid 과함께 호출한다
예상값 : userid 가 brown 인 회원의 정보들을 UserVo 객체에 저장한 값이 user
assertNotNull(user) 를 통해 user 값이 Null 인지 아닌지 검사 : 회원 한명의 정보가 제대로 들어있는지 brown 이라는 회원이 존재하는지 검사
assertEquals를 통해 user라는 UserVo 객체에 있는 유저의 이름이 브라운인지 검사
성공 결과

SELECT * FROM (SELECT ROWNUM rn, a.* FROM (SELECT * FROM users order by userid ) a WHERE ROWNUM <= :page * :pasesize ) where rn between (:page-1)* :pasesize + 1 AND :page * :pasesize
SELECT * FROM users
ORDER BY userid
검색하려는 테이블의 값은 ORDER BY 가 없으면 항상 값의 순서를 보장할 수 없다. 값이 매번 달라진다. ROWNUM 을 사용해서 늘 동일한 값을 가져오기 위해 ORDER BY USERID 로 정렬을 해준다.
SELECT * FROM (SELECT ROWNUM rn, a. FROM (SELECT * FROM users order by userid ) a WHERE ROWNUM <= :page * :pasesize* ) where rn between (:page-1)* :pasesize + 1 AND :page * :pasesize
SELECT ROWNUM rn, a. FROM (SELECT * FROM users order by userid ) a WHERE ROWNUM <= :page * :pasesize*
1번에서 얻은 정렬된 모든 회원의 값을 a 로 놓고 inline-view 를 통해 rownum 을 한 값을 rn 컬럼으로 얻는다.
여기서 :page * :pagesize 가 의미하는 것: 1페이지의 크기가 :pagesize 이며 (3을입력하면 한페이지당 3개의 회원이 나옴) 검색을 원하는 페이지의값인 : page 의 두 값을 곱한 값은 1page 부터 내가 검색하고 싶은 :page 페이지까지의 모든 회원의 정보가 나온다.
예를들어 페이지내에 들어있는 회원수가 3이고 내가 조회하고 싶은 페이지는 2페이지이면 총 6명의 회원까지의 값이 page * : pagesize 이다.
이 수보다 ROWNUM 이 작거나 같다는 것은 총 6명의 회원들이 전부 선택된다는 것
SELECT * FROM (SELECT ROWNUM rn, a. FROM (SELECT * FROM users order by userid ) a WHERE ROWNUM <= :page * :pasesize ) where rn between (:page-1) :pasesize + 1 AND :page * :pasesize**
현재 구하고자 하는 값 : 내가 조회하고 싶은 페이지에 들어있는 모든 회원들
where rn between (:page-1) :pasesize + 1 AND :page * :pasesize 해설*
→ 내가 구하려고 하는 페이지의 바로 직전 페이지에 있는 마지막 회원의 rownum + 1 은 내가 구하려고 하는 페이지의 첫번째 회원의 rownum 값이 된다. + 내가 구하려고 하는 페이지 * pagesize 는 내가 구하려고 하는 페이지의 회원중에 가장 마지막에 있는 회원의 rownum 의 값
rn 이 위에 where 절의 범위에 있는 회원의 값은 : 내가 구하고자하는 조회를 원하는 페이지에 들어있는 모든 회원의 리스트
user.xml

입력하는 :page, :pagesize 인 바인드변수를 mybatis 에서는 #{page} , #{pasesize} 로 변경한다.
아래는 vo객체를 typeAliase 로 지정해준 것이다. mybatis-config.xml 에 alias 경로를 지정해 놓는다.
mybatis-config.xml


위 테스트 사진 설명 :



논리적으로 : 데이터 베이스에 연결이 필요하다.
-여기서 driver, url , username, password등을 통해 데이터 베이스와 연결하는 환경설정을 한다.
-또한 여기서 sql 문들이 <select, insert, update> 태그로 연결되어 있는 xml (우리는 여기서 user.xml ) 로 설정
현재 세부분으로 설정이 되어 있다.

