[질문] 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 > #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 |