출처: http://bestbang.tistory.com/34
ORACLE DB CHARACTER SET 이 US7ASCII 를 사용하는 DataBase 에 insert 를 하기 위해서는
8859_1 를 변환을 시켜야 한다.
이를 위해 TypeHandlerCallback 를 이용하여 해당 DB 의 insert, update 에서만
따로 정의한 TypeHandler 를 이용하게끔 했다.
OracleUsTypeHandler.java
.... public class OracleUsTypeHandler implements TypeHandlerCallback { public Object getResult(ResultGetter getter) throws SQLException { String str = null; try { str = new String(getter.getString().getBytes("8859_1"), "EUC_KR"); } catch (UnsupportedEncodingException e) { e.printStackTrace(); str = getter.getString(); } return str; } public void setParameter(ParameterSetter setter, Object parameter) throws SQLException { String str = null; try { str = new String((String)parameter.getBytes("8859_1"), "EUC_KR"); } catch (UnsupportedEncodingException e) { e.printStackTrace(); str = (String)parameter; } setter.setString(str); } public Object valueOf(String s) { return s; } } |
sql-map-config.xml (hendler를 이용한 부분적용)
<sqlMapConfig> ... <typeAlias type="com.tistroy.bestbang.OracleUsTypeHandler" alias="ORACLEUS" /> ... <sqlMap resource="sqlmap/TestTable.xml" /> ... </sqlMapConfig> |
sql-map-config.xml (전체적용)
<sqlMapConfig> ... <typeHandler callback="ORACLEUS" jdbcType="VARCHAR" javaType="java.lang.String" /> ... <sqlMap resource="sqlmap/TestTable.xml" /> ... </sqlMapConfig> |
TestTable.xml
<sqlMap namespace="TestTable"> .... <insert id="insertTestTable" parameterClass="hddrvGodPpc"> insert into TEST_TABLE( num, title ) values ( ,#num:NUMERIC# ,#title,handler=ORACLEUS# ) </insert> .... </sqlMap> |
TypeHandlerCallback 이용시 boolean 처리나 enum 등 다양한 사용자 정의 TypeHandler 사용이 가능하다.
'IT_Programming > Dev Libs & Framework' 카테고리의 다른 글
[펌] ZooKeeper를 활용한 Redis Cluster 관리 (0) | 2013.07.03 |
---|---|
[펌_Sping] Spring에서의 Config설정 - AOP (0) | 2013.04.12 |
[펌] Spring + iBatis 연동시 iBatis Transaction 실행 안되는 문제 (0) | 2013.04.05 |
[펌] Spring - Quartz를 사용하여 스케쥴러 구현하기 (0) | 2013.04.05 |
[펌] Spring Controllers (0) | 2013.04.05 |