IBATIS CLOB처리(flyx)
%% 오라클 10g 이상 drive 에서 된다고함 %%
%% Clob 핸들러 없이 일반 select, insert, update, delete 로 처리됨 %%
1. sql-map-config.xml 설정
<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>