ibaits 중국어관련
- 작성자 :
- 방*호
- 작성일 :
- 2010-12-22 14:15:04
- 조회수 :
- 2,273
- 구분 :
- 실행환경
- 진행상태 :
- 완료
Q
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 에서 커넥션을 어떻게 맺고 있는지 알수 없는지 문의 합니다.
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 에서 커넥션을 어떻게 맺고 있는지 알수 없는지 문의 합니다.
A
안녕하세요.. 방익호님..
위의 예는 iBatis만을 직접적으로 사용한 경우에는 바로 적용가능하나..
DataSource가 적용된 예(Spring과의 연계하여 사용)는
추가적인 작업을 통하여 .. OraclePreparedStatement를 찾아야 할 것 같습니다.
방법은 debugger 등을 통하여 최종 delegate가 어떤 클래스인지 .. 확인하셔서.. 추가적인 getter를 통하여 실제 OraclePreparedStatement를 얻어오는 방법을 찾으셔야 할 것 같습니다. (클래스의 타입을 System.out 등으로 확인하시고 관련 javadoc에서 제공하는 getter 등을 확인하는 방법도 가능)
해당 부분은 JDBC 드라이버, DBMS 등의 여러 요인으로 인하여 정확한 답을 드릴 수 없음을 이해해 주시기 바랍니다.
그럼.. 즐거운 하루되십시오.
감사합니다.
위의 예는 iBatis만을 직접적으로 사용한 경우에는 바로 적용가능하나..
DataSource가 적용된 예(Spring과의 연계하여 사용)는
추가적인 작업을 통하여 .. OraclePreparedStatement를 찾아야 할 것 같습니다.
방법은 debugger 등을 통하여 최종 delegate가 어떤 클래스인지 .. 확인하셔서.. 추가적인 getter를 통하여 실제 OraclePreparedStatement를 얻어오는 방법을 찾으셔야 할 것 같습니다. (클래스의 타입을 System.out 등으로 확인하시고 관련 javadoc에서 제공하는 getter 등을 확인하는 방법도 가능)
해당 부분은 JDBC 드라이버, DBMS 등의 여러 요인으로 인하여 정확한 답을 드릴 수 없음을 이해해 주시기 바랍니다.
그럼.. 즐거운 하루되십시오.
감사합니다.