iBatis 사용시 NULL 에 대한 주의 할 점.

1. 입력값이 빈 경우 처리

<isNotEmpty property="detailStatsKind">
      AND STATS_DETAIL_SE = #detailStatsKind#
</isNotEmpty>

2. biding 되는 값 중 NULL 이 있을 경우 기본값(default-value)로 치환 하는 법.
    <resultMap>
       <result property="valueObject-Field-Name"     column="Column-NamenullValue='0'/>
    </resultMap>

 와 같이 <result property    /> 에 nullValue= 를 이용하여 기본값을 얻어 올 수 있도록 한다.

위와 같이 하지 않을 경우, int-type 을 return  받길 예상 했으나, 적당한 값이 Bind 되지 않아 NULL 이

반환되면 result-Map 의 Class 에 정의한 int-type 변수와 null 이 만나게 되어 Exception 이 발생합니다.

3. parameter 인자가 NULL 이 전달 될 때, 적절한 값으로 type-casting 이 되지 않아, 예외가 발생.

Inser into table(A, b, c, d) values(#a-value#, #b-value#, #c-value#,#d-value#);

와 같이 sql 을 작성하고 , 파라메터 클래스를 이용하여 파라메터를 전달 할 때, 파라메터가 NULL-value 를 

전달 하게 되면, casting 에 문제가 생길 수 있습니다.

Interger-Class 또한 NULL-value 를 받아 넣을 수 있기 때문에, 그런지 정확한 type명시기 필요 합니다.

비단 insert 의 경우 뿐 아니라, 파라메터를 전달하는 모든 경우에 해당 될 수 있습니다.

따라서 아래와 같이 수정/정리 할 수 있습니다.

Inser into table(A, b, c, d) values(#a-value#, #b-value#, #c-value#,#d-value#);

==> Inser into table(A, b, c, d) values(#a-value:VARCHAR:NO_ENTRY#
                                                , #b-value:VARCHAR:
NO_ENTRY#
                                                 ,#c-value
:VARCHAR:NO_ENTRY#
                                                 ,#d-value
:VARCHAR:NO_ENTRY#);

    설명.
    #{parameter-Name}:{value-type}:{default-value}#

[출처] ibatis nullValue|작성자 tkgotjd


출처 : http://blog.naver.com/PostView.nhn?blogId=mankeys&logNo=161195599

'Programming > 개발 노트' 카테고리의 다른 글

mht가 이상하게 열린다?!  (0) 2014.02.19
[iBatis] Dynamic SQL, iterate  (0) 2013.12.24
VirtualBox 다루기!!  (0) 2013.10.29
forward와 redirect의 차이  (0) 2013.10.28
by 으스스 2013. 12. 24. 10:28