본문 바로가기

Programming/DB

[iBatis] namespace 관련사항

namespace



namespace 란 같은 문서내에 있는 Element의 중복을 피하기 위해 XML에 존재하는 문법이다.


sqlmap config 파일에서 useStatementNameSpaces 속성을 true로 줬을 때

쿼리를 수행할 때에는 반드시 namespace를 통해서 접근을 하게 된다.

예를 들면 user.xml 파일이 다음과 같다고 해보자


<sqlMap namespace="userinfo">


<resultMap id="user" class="net.javajigi.user.model.User">
    <result property="userId" column="userId" columnIndex="1"/>
    <result property="password" column="password" columnIndex="2"/>
    <result property="name" column="name" columnIndex="3"/>
    <result property="email" column="email" columnIndex="4"/>
</resultMap>


<select id="selectbyuserid" parameterClass="string" resultMap="user">

SELECT 

USERID

, PASSWORD

, NAME

, EMAIL 

FROM USERINFO

WHERE USERID=#value#

</select>

</sqmMap>


그렇다면 실제 쿼리를 수행할 때에는 접근을 다음과 같이 한다.

queryForList("userinfo.selectbyuserid");


그러나 !!!

만일 select id 부분이 "select.by.userid" 이런식으로 점(.)을 포함하고 있다면 

namespace는 무시가 된다.

즉, queryForList("userinfo.select.by.userid"); 로 수행을 하게 되면 해당 statement를 

찾을수 없다고 나오게 된다.


대신에 

queryForList("select.by.userid"); 


로 수행을 하게 되면 수행이 된다


출처 : OKJSP Java/JSP Tips