<insert id="test">
insert into dto(
id,pass)
values(
#id:VARCHAR#,
#pass:VARCHAR#
)
</insert>
과
<insert id="test2" parameterMap="mapTest">
insert into dto(
id,pass)
values(
?,?
)
</insert>
둘중에 어느 것이 이해하기 쉬운가?
둘다 처음볼수있겠지만...딱보기에도
아래것이 훨씬 직관적이다
왜냐하면 ?,?에 내가 넣을 insert값이 들어간다는것은 JDBC 프로그래밍을 한번이라도 해봤으면
알고있을것이다
사실 인라인 파라미터 매핑은 장점도있다
왜냐하면 실제 DB를 보지않고도 XML에서
VARCHAR형인지 INT형인지 DATA TYPE을 바로알수있기 때문이다.
또한 사용할때 이상한
<parameterMap class="ibatis.test.Dto" id="mapTest">
<parameter property="id" jdbcType="VARCHAR"/>
<parameter property="pass" jdbcType="VARCHAR"/>
</parameterMap>
이것과 같이 이런것을 선언하지 않고도 사용할수있다.
하지만 중요한건 중복이 심하다는 것이다.
왜냐하면 바로위에 나왔던 id,pass 가 바로아래에 또나온다.
반면에 파라미터 맵은
<parameterMap class="ibatis.test.Dto" id="mapTest">
<parameter property="id" jdbcType="VARCHAR"/>
<parameter property="pass" jdbcType="VARCHAR"/>
</parameterMap>
위와같이 특정 DTO 클래스를 이미 지정해주고 ID값을 넣어줘야한다.
ibatis.test.Dto은 패키지와 클래스명이다.
그러고 사용할때는 parameterMap= 아까지정한 id
라고 정의만해주면 ?,?를 마음껏사용할수있다.
<insert id="test2" parameterMap="mapTest">
insert into dto(
id,pass)
values(
?,?
)
</insert>
그리고 실제 호출할때는
메인 메소드 또는 단위 테스트에서
Dto dto = new Dto();
dto.setId("test2");
dto.setPass("pass2");
SqlMapLocator.getMapper().insert("test2",dto);
//첫번째 parameter는 내가 xml에서 정의한 매핑 을 부를때 쓰는 매핑id값이고 두번째는 insert이므로 넘겨줄 객체이다.
해주면된다.
-----------------------참고. db connect관련 xml 파일인 SqlMapConfig.xml을 호출하는 static 메소드를 가진 클래스
package com.util;
import java.io.IOException;
import java.io.Reader;
import com.ibatis.common.resources.Resources;
import com.ibatis.sqlmap.client.SqlMapClient;
import com.ibatis.sqlmap.client.SqlMapClientBuilder;
public class SqlMapLocator {
public static SqlMapClient getMapper(){
SqlMapClient sqlMapper = null;
try {
Reader reader = Resources.getResourceAsReader("SqlMapConfig.xml");
sqlMapper = SqlMapClientBuilder.buildSqlMapClient(reader);
reader.close();
} catch (IOException e) {
//fail시 발생
e.printStackTrace();
}
return sqlMapper;
}
'SQL > IBATIS' 카테고리의 다른 글
ibatis 태그. 자주 쓰는 것들 (0) | 2016.04.05 |
---|---|
iBatis IN명령 (0) | 2015.12.29 |
ORA-01013: 사용자가 현재 작업의 취소를 요청했습니다. (0) | 2015.11.27 |
ibatis - 캐쉬제거 remapResults (0) | 2015.10.21 |
java-ibatis-mssql, 소수점 문제 (0) | 2014.10.23 |
ibatis selectkey 활용 (0) | 2014.10.17 |
ibatis - 동적으로 테이블 가져올 때 부적합한 열이름 에러 (0) | 2014.09.11 |
ibatis에서 queryForList와 queryForMap의 차이 (0) | 2014.08.21 |