..
[sql-map] tip!!
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

[질문] SQL에 XML 문자(<, > 같은)가 들어가는 경우 해결책은?

 [답변] 두가지 방법이 있다.
(1) XML의 CDATA 섹션 사용하거나

    <statement id="getPersonsByAge" resultClass="examples.domain.Person"><![CDATA[
      SELECT *
      FROM PERSON
      WHERE AGE > #value#
    ]]></statement>

 (2) XML문자를 특수 엔터티 문자로 변환(AnyEdit 플러그인 사용하면 편함)

   <statement id="getPersonsByAge" resultClass="examples.domain.Person">
      SELECT *
      FROM PERSON
      WHERE AGE &gt; #value#
   </statement>

 [질문] SQL이 너무 많아 statement의 id 만으로는 구분이 어렵다면?

 [답변] iBatis는 namespace 개념을 지원한다. sql-map-config.xml 에서

     useStatementNamespaces 값을 true로 준다. 이제 SQL 정의 xml 파일을 여러개로

     나누고 각 파일별로 적당한 namespace를 지정한다.

* sql-map-config.xml

   <sqlMapConfig xmlns:fo="http://www.w3.org/1999/XSL/Format">
    <settings
      cacheModelsEnabled="true"
      enhancementEnabled="true"
      useStatementNamespaces="true"
      lazyLoadingEnabled="true"
      maxRequests="512"
      maxSessions="128"
      maxTransactions="32" />

* SQL 파일에서 이렇게.

 <sqlMap namespace="Sample">

  <select id="getPersonsByAge" ...>

 * DAO 코딩 예("namespace.statement_id" 형식)

   return getSqlMapClientTemplate().queryForList("Sample.getPersonsByAge", "30");

 [질문] 실제 수행되는 쿼리 정보를 콘솔 및 로그에 찍고 싶은데?

 [답변] log4j.properties 파일에 아래처럼 설정한다.

(log4j.logger.java.sql.Connection=DEBUG 는 반드시 있어야한다.)

 log4j.logger.java.sql.Connection=DEBUG
log4j.logger.java.sql.Statement=DEBUG
log4j.logger.java.sql.PreparedStatement=DEBUG
log4j.logger.java.sql.ResultSet=DEBUG

 아래 처럼 찍힌다.

 [2004/12/07 16:59:25] <DEBUG> sql.Connection : {conn-100003} Connection
[2004/12/07 16:59:25] <DEBUG> sql.PreparedStatement : {pstm-100004} PreparedStatement: select user_id, password, name, user_type, user_group, regist_date, status from   ws_user where user_id = ?
[2004/12/07 16:59:25] <DEBUG> sql.PreparedStatement : {pstm-100004} Parameters: [test1]
[2004/12/07 16:59:25] <DEBUG> sql.PreparedStatement : {pstm-100004} Types: [java.lang.String]
[2004/12/07 16:59:25] <DEBUG> sql.ResultSet : {rset-100005} ResultSet
[2004/12/07 16:59:25] <DEBUG> sql.ResultSet : {rset-100005} Header: [user_id, password, name, user_type, user_group, regist_date, status]
[2004/12/07 16:59:25] <DEBUG> sql.ResultSet : {rset-100005} Result: [test1, test1, 테스트유저, U, 01, 20041204, A]

[출처] iBatis SQL Map 팁|작성자 서영아빠

'DEV > java' 카테고리의 다른 글

숫자 -> 문자 문자 ->숫자 Integer.toString  (0) 2008.12.29
[sql-map] Dao : getSqlMapClientTemplate  (0) 2008.12.23
[sql-map] Dao : getSqlMapClientTemplate()  (0) 2008.12.23
  Comments,     Trackbacks