JDBC 2009. 1. 14. 15:07

IBATIS CLOB처리(flyx)


%% 오라클 10g 이상 drive 에서 된다고함 %%

%% Clob  핸들러 없이 일반 select, insert, update, delete 로 처리됨 %%


1. sql-map-config.xml 설정

<transactionManager type="JDBC" >
  <dataSource type="DBCP">
   <property name="JDBC.Driver" value="${jdbc.driverClassName}"/>
   <property name="JDBC.ConnectionURL" value="${jdbc.url}"/>
   <property name="JDBC.Username" value="${jdbc.username}"/>
   <property name="JDBC.Password" value="${jdbc.password}"/>
   <property name="JDBC.DefaultAutoCommit" value="true" />
   <property name="Pool.MaximumActiveConnections" value="10"/>
   <property name="Pool.MaximumIdleConnections" value="5"/>
   <property name="Pool.MaximumCheckoutTime" value="120000"/>
   <property name="Pool.TimeToWait" value="500"/>
   <property name="Pool.PingQuery" value="select 1 from dual"/>
   <property name="Pool.PingEnabled" value="true"/>
   <property name="Pool.PingConnectionsOlderThan" value="1"/>
   <property name="Pool.PingConnectionsNotUsedFor" value="1"/>
   <property name="Driver.SetBigStringTryClob" value="true"/> 
  </dataSource>
 </transactionManager>


 

2. sqlMap.xml 설정

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sqlMap PUBLIC "-//iBATIS.com//DTD SQL Map 2.0//EN" "
http://www.ibatis.com/dtd/sql-map-2.dtd">

<sqlMap namespace="DOMAIN">

  <resultMap id="result_lob_map" class="java.util.HashMap">
        <result property="idx_key" column="idx_key" />   
        <result property="content" column="content"    jdbcType="CLOB" javaType="java.lang.String" />
 </resultMap>

 
   <select id="select_clob"    resultMap="result_lob_map">
      SELECT    id idx_key, content content   FROM CHON
  </select> 
 
  <insert id="insert_clob" parameterClass="java.util.HashMap" >
  insert into CHON(id, content)
  values(#id#, #content:java.lang.String#) 
  </insert>
 
  <update id="update_clob" parameterClass="java.util.HashMap" >
  update CHON
  set content = #content:java.lang.String#
  where id = #id# 
  </update> 
</sqlMap>





select시 resultMap을 이용해서 처리해야한다.
아래 insert부분은 flyx에 포함된 ibatis에서 insert 시 사용된 부분이다.
clob타입이든 varchar 타입이든 다른부분이 없음.

select시에만 상이함.
참고로 altibase5.0에서도 clob처리 방법이 동일함사용방법 동일함
(flex(flyx)+spring+ibatis+altibase경우 위에 첫번째에 해당하는 부분 불필요함)

<resultMap id="ResultClob" class="java.util.HashMap">
    <result property="IDX" column="IDX" javaType="String"/>
       <result property="TITLE" column="TITLE" javaType="String" />
    <result property="CONTENT" column="CONTENT" javaType="java.lang.String" jdbcType="CLOB" />
  </resultMap>
 

<select id="SELECT3" parameterClass="java.util.HashMap" resultMap="ResultClob">
    
      SELECT IDX,TITLE,CONTENT FROM TEST1

 </select>

<insert id="INSERT3" parameterClass="java.util.HashMap">
    <![CDATA[
   INSERT INTO TEST1(IDX,TITLE,CONTENT)
   VALUES ((SELECT NVL(MAX(IDX),0)+1 AS IDX FROM TEST),#TITLE#,#CONTENT#)
  ]]>
 </insert>