[ibatis] parameterMap의 property 속성 옵션 정리
parameterMap의 property 속성 옵션 정리
ibatis에서 쿼리를 실행하기 위해 넘어오는 parameter를 정의하기 위한<parameterMap>을 명시한다.
[Java Web/MyBatis, iBatis] - [ibatis] parameterClass, parameterMap 사용 기본
1. <parameterMap> 의 <parameter> 옵션 값
<parameterMap id="parameterMapName" [class="com.comain.Product"]>
[nullValue="-999999"] [typeName="{REF of user-defined type}"/>
</parameter>
</parameterMap>
빨간색으로 표시한 부분이 <parameter> 의 요소이며, [괄호] 로 둘러싼 부분은 옵션이다.
- 또한, Date 값 타입을 파라미터로 넘어올 때 사용한다.
(JAVA는 Date 타입이 java.util.Date 하나이지만, SQL 데이터베이스는 여러개의 Date 타입을 가지기에 명시적으로 지시하기 위하여 Date 타입이 사용될 때 jdbcType으로 지정한다.)
(3) javaType
- javaType 속성은 파라미터의 셋팅을 위해 JAVA Type을 명시적으로 정의하기 위해 사용된다.
- 대게 이것은 자바빈즈 변수에서 파생되지만, Map과 XML 맵핑 같은 특정 맵핑은 프레임워크를 위한 타입을 제공하지 않는다.
- 만약 javaType이 셋팅되지 않고 프레임워크도 어떤 타입인지 구별할 수 없다면 타입은 객체로 간주될 것이다.
(4) typeName
- typeName 속성은 REF 타입이나 사용자 정의 타입을 명시하기 위해 사용된다.
- 만약 파라미터가 사용자 정의 타입이나 REF 타입을 가지지 않는다면, typeName 은 무시된다.
(5) nullValue
- nullValue는 parameter property의 값이 특정 값일 경우 NULL로 대체하기 위한 옵션이다.
- NULL 이 들어오면 특정 값으로 변환하는 것이 아닌!!!! 특정값이 들어오면 NULL 로 변환하는 것이다 헷갈리지 말자
- 이것은 특히 NULL 이 될 수 없는 타입 (int, double, float 등)의 값이 데이터베이스에 NULL 로 변환해야 되는 경우 유용하게 사용할 수 있다.
* parameter 속성 옵션 사용 예
<?xml version="1.0" encoding="utf-8"?> <!DOCTYPE sqlMap PUBLIC "-//iBATIS.com//DTD SQL Map 2.0//EN" "http://www.ibatis.com/dtd/sql-map-2.dtd"> <sqlMap namespace="Product"> <parameterMap id="insert-product-param" class="com.domain.Product"> <parameter property ="id" jdbcType="NUMERIC" javaType="int" nullValue="-9999999"/> <parameter property ="description" jdbcType="VARCHAR" nullValue="NO_ENTRY" /> </parameterMap> <statement id="insertProduct" parameterMap="insert-product-param"> INSERT INTO PRODUCT(PRD_ID, PRD_DESCRIPTION) VALUES(?,?); </statement> </sqlMap> |
위 예제에서 Product 객체의 id 와 description은 목록화 되는 순서대로 mapping된 statement인 insertProduct의 파라미터에 대체된다. "id"는 첫번째 "?" 에 적용되고 description은 두번째 "?"에 적용된다. 만약 순서가 반대라면 <parameterMap> 에서 <parameter>의 순서를 바꿔줘야 한다.
* <parameterMap> 을 다른 SQL Map XML 파일에서 참조하기 위해서는 namespace를 사용하여 접근하여야 한다.
ex> Product.insert-product-param
2. 인라인 Parameter Maps
<parameterMap> 을 사용하면 파라미터에 대한 선언이 자세하게 명시되지만, 너무 복잡하다.
statement에 파라미터를 인라인 시키면 파라미터 Maps를 위한 정의를 간단하게 하고 코드도 줄일 수 있다.
타입 선언은 다음과 같이 인라인 파라미터로 사용할 수 있다.
<statement id="insertProduct" parameterClass="com.domain.Product"> |
nullValue 의 인라인 파라미터 사용은 아래와 같다
<statement id="insertProduct" parameterClass="com.domain.Product"> INSERT INTO PRODUCT(PRD_ID, PRD_DESCRIPTION) VALUES(#id:NUMERIC:-999999#, #description:VARCHAR:NO_ENTRY#); </statement> |
출처: https://hyeonstorage.tistory.com/284?category=549765 [개발이 하고 싶어요]
'Java 관련 > MyBatis, iBatis' 카테고리의 다른 글
[MyBatis] Invalid bound statement (not found): 에러 (0) | 2020.09.07 |
---|---|
[mybatis] insert 후 key값 반환 (0) | 2020.09.07 |
[ibatis] parameterMap, resultMap 지원되는 jdbcType, javaType 정리 (0) | 2019.10.07 |
[ibatis] resultMap의 property 속성 옵션 정리 (0) | 2019.10.07 |
[ibatis] resultClass, resultMap 사용 기본 (0) | 2019.10.07 |
[ibatis] parameterClass, parameterMap 사용 기본 (0) | 2019.10.07 |
[ibatis] <procedure> call 사용 (0) | 2019.10.07 |
[ibatis] 자동생성키 <selectKey> 사용 정리 (채번, Sequence) (0) | 2019.10.07 |