굄돌
2007-02-05 14:53:09
2
12940

iBatis에서 namespace에 관한 사항


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"/>
     <result property="admin" column="adminYN" columnIndex="5"/>
    </resultMap>

 <select id="selectbyuserid" parameterClass="string" resultMap="user">
     SELECT userId, password, name, email, adminYN
     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"); 로 수행을 하게 되면 수행이 된다.

 

이것 때문에 한 2-3일 고생한것 같은데... 분명히 useStatementNameSpaces 속성이 true인데 안된다고 생각하니 지금도 좀 의문스럽다.

 

명심하자 !! 쿼리 id 부분에는 점(.)을 넣지 말자 !!

0
0
  • 댓글 2

  • 우가가
    2007-02-10 15:37:28
    좋은 정보 감사합니다~
    0
  • noko
    233
    2017-04-20 10:35:48
    감사합니다!
    0
  • 로그인을 하시면 댓글을 등록할 수 있습니다.