eGovFrame 표준프레임워크 포털

메뉴 건너띄기
상단메뉴 바로가기
본문 바로가기

이 누리집은 대한민국 공식 전자정부 누리집입니다.

본문 영역

적용 지원, FAQ, Q&A 게시판을 통해 기술 문제 해결을 지원합니다.

묻고 답하기

ibaits 중국어관련
  • 작성자

    방*호

  • 작성일

    2010-12-22 14:15:04

  • 조회수

    2,690

  • 구분

    실행환경

  • 진행상태

    완료

질문

package egovframework.com.vtex.com.inc;

import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.sql.Statement;

import oracle.jdbc.OraclePreparedStatement;

import org.apache.commons.dbcp.DelegatingStatement;

import com.ibatis.sqlmap.engine.type.StringTypeHandler;

public class NVarcharTypeHandler extends StringTypeHandler {

@Override
public void setParameter(PreparedStatement ps, int i, Object parameter, String jdbcType)
throws SQLException {
Statement delegate = ps;
while (delegate instanceof DelegatingStatement) {
delegate = ((DelegatingStatement)delegate).getDelegate();
}

<!--중국어 관련해서 문의-->
if (delegate instanceof OraclePreparedStatement) {
((OraclePreparedStatement)delegate).setFormOfUse(i, OraclePreparedStatement.FORM_NCHAR);
<!--중국어 관련해서 문의-->


}
ps.setString(i, ((String) parameter));
}

}



지금 소스면 <sqlMapConfig> 소스안에 <typeHandler 핸들어 부분을 줘서 위에 소스 부분을 적용하려고 했는데.
제가 상단에 주석으로 한 부분을 보면 두개의 타입이 같지 않아서 if 문안으로
적용이 안되는데 이부분에 대해 해결 방안이 없는지 해서요
아님 EgovAbstractDAO 에서 커넥션을 어떻게 맺고 있는지 알수 없는지 문의 합니다.

답변

안녕하세요.. 방익호님..

위의 예는 iBatis만을 직접적으로 사용한 경우에는 바로 적용가능하나..
DataSource가 적용된 예(Spring과의 연계하여 사용)는
추가적인 작업을 통하여 .. OraclePreparedStatement를 찾아야 할 것 같습니다.

방법은 debugger 등을 통하여 최종 delegate가 어떤 클래스인지 .. 확인하셔서.. 추가적인 getter를 통하여 실제 OraclePreparedStatement를 얻어오는 방법을 찾으셔야 할 것 같습니다. (클래스의 타입을 System.out 등으로 확인하시고 관련 javadoc에서 제공하는 getter 등을 확인하는 방법도 가능)

해당 부분은 JDBC 드라이버, DBMS 등의 여러 요인으로 인하여 정확한 답을 드릴 수 없음을 이해해 주시기 바랍니다.

그럼.. 즐거운 하루되십시오.
감사합니다.

이 페이지의 구성

묻고 답하기