<오늘>
1. 페이징,검색기능
2. mybatis

validator프레임웤
검증하려면 controller, service, dao에서 다 검증해야됨. 넘어온 데이터 믿을 수 없어서
-> 일일히 다 검증하지 말고 검증대상인 데이터를 가지고 있는 VO에서 체크를 한다.


페이징처리
1. screenSize, totalRecord이용해서 totalPage 계산
(totalRecord+screenSize+9)/screenSize
2. blockSize는 고정. currentPage가지고 startPage, endPage
startPage = (currentPage-1)/blockSize*blockSize+1
endPage = startPage+blockSize-1

  1. currentPage, sreenSize보고 startRow, endRow결정
    startRow = screenPagecurrentPage+1
    endRow = screenPage
    currentPage

rownum은 동적으로 만들어지는 의사코드.

쿼리문 실행-from -where-select
-> where절에서 아직 만들어지지 않은 데이터를 쓰려고 하는것 => 결과 안나옴

=> 인라인뷰 사용.

정렬하고 id부여

망한코드
1. jsp에서 자바코드 많음 디자이너와 협업 어려움
2. 회원관리에서만 페이징처리 가능
-> 제네릭


Mybatis

namespace

namespace는 반드시 인터페이스의 퀄러파이드네임으로 줄것! 그래야 mybatis가 메서드들 찾을 수 있음.

null처리-jdbcType

ibatis는 null값 알아서 ""로 넣어줬는데 Mybatis는 그게 안됨. VARCHAR의 널값인지 VARCHAR2의 널인지 타입을 몰라서
->jdbcType써서 null처리 해주기

뭐에 들어갈지 모르니까 그냥 다 넣는다.

하지만 실행하면 수정안됨-쿼리문실행하고 바로 롤백해서

commit설정

autoCommit()을 하거나 직접 커밋할 수도 있음.

코드 fragment

코드 프레그먼트. 코드의 일부분을 작성해서 필요한 곳에서 가져다 쓸 수 있는 것

OGNL표기법

@다음 클래스명@메서드명하면 자바 코드처럼 쓸 수 있다.


회원정보와 회원이 구매한 구매목록도 조회하라
상품을 구매했을 수도 있지만 없을수도 있다 -> outer조인 해야됨

하지만 오류남

CLOB에 대해 중복 판단 하려면?

  • LOB(LargeObject)타입에는 DISTINCT 사용할 수 없음.
    데이터가 많아서 일일히 비교 못해서
    -> 인라인뷰 사용

하지만 중간에 인라인뷰 있으면 가독성 떨어짐
-> 인라인뷰 모아놓는것 - WITH


member-prod 테이블 사이의 관계
1 대 n
-> VO에 적용하면
1대1 - has a
1대n - has many

resultType - MEM_ID ~ 값들을 소문자로 바꾸고 SET붙여서 Mybatis가 setter처럼 리플렉션 하는것.
하지만 두개 이상 테이블 조인하면 하나의 VO로 바인딩할 수 없음
=> resultMap사용해서 수동으로 바인딩해야됨.

  • has a 관계 : association
  • has many 관계 : collection

원래는 result이후에 써준 것처럼 속성 일일이 바인딩해야되는데 autoMapping주면 저 규칙성에 의해 자동으로 바인딩해줌

그 안에 들어가는 PagingVO도 마찬가지로 autoMapping 해주면 일일이 안써줘도 됨.

회원은 한명인데 구매한내역은 여러개일 수 있음 - 그렇다고 MemberVO를 여러개 만드느냐? 그건아님. MemberVO는 하나인데 그 안에 들어가는 ProdVO가 여러개인 것 -> 같은 회원인지 구분할 수 있어야됨 -> pk로 구분 - VO equals => id속성으로 묶기.

식별성 있는 데이터 -id
식별성 없는 데이터 - result
id가 같으면 또다른 VO만들지 않는다.

List< Prod> -> javaType으로 큰 타입 잡고 ofType으로 작은타입 잡아준다.

NestedMap

위 코드 보면 맵안에 또 맵있음 -> 네스티드 맵이라고 한다.

CDATA - 이스케이프문자 쓰기

< - 태그랑 혼동되서 에러남.
CDATA이용하면 이스케이프문자 사용 가능하다.

0개의 댓글