jp.terasoluna.fw.orm.ibatis.support
クラス BlobInputStreamTypeHandler

java.lang.Object
  上位を拡張 AbstractLobTypeHandler
      上位を拡張 jp.terasoluna.fw.orm.ibatis.support.BlobInputStreamTypeHandler

public class BlobInputStreamTypeHandler
extends AbstractLobTypeHandler

iBATISから利用されるBLOBとストリームをマッピングする実装のiBATISのタイプハンドラ。

BLOB列をバイト配列として扱う場合、本クラスを利用する必要がない。 バイト配列として扱うと、 BLOB列で扱うデータが巨大でメモリエラーが発生したり、 性能要件が満たせない場合のみ、本クラスを利用すること。

内部でSpringが提供しているLobHandlerを利用しているため、 本クラスを利用するためには、LobHandlerのBean定義とsqlMapClientFactoryBeanへの設定を行うこと。 なお、LobHandlerの実装クラスは、Springが提供している。
※ Oracleの場合は、OracleLobHandler、その他の場合は、DefaultLobHandlerを利用すること。

Bean定義ファイルの設定例】

   <!-- LOBフィールドを扱うためのハンドラ -->
   <bean id="oracleLobHandler"
            class="org.springframework.jdbc.support.lob.OracleLobHandler">
     <property name="nativeJdbcExtractor" ref="simpleExtractor"/>
   </bean>

   <!-- iBATIS データベース層のためのSQlMapの設定 -->
   <bean id="sqlMapClient"
       class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">
     <property name="configLocation" value="WEB-INF/sql-map-config.xml"/>
     <property name="dataSource" ref="dataSource"/>
     <property name="lobHandler" ref="oracleLobHandler"/>
   </bean>
 

本クラスを利用したiBATIS設定ファイルの記述方法を以下にしめす。

【BLOB_TESTテーブル定義】

列名 制約
PK INTEGER NOT NULL
MAP BLOB NOT NULL

iBATIS設定ファイルの設定例】

 <!-- update文の設定 -->
 <parameterMap id="blobParam" class="java.util.Map">
   <parameter property="pk"/>
   <parameter property="map"
       typeHandler="jp.terasoluna.fw.orm.ibatis.support.BlobInputStreamTypeHandler"/>
 </parameterMap>

 <insert id="insertBLobTest" parameterMap="blobParam">
   INSERT INTO BLOB_TEST (PK, MAP) VALUES (?, ?)
 </insert>

 <!-- select文の設定 -->
 <resultMap id="blobResult" class="java.util.HashMap">
   <result property="pk"/>
   <result property="map"
       typeHandler="jp.terasoluna.fw.orm.ibatis.support.BlobInputStreamTypeHandler"/>
 </resultMap>

 <select id="selectBLobTest" resultMap="blobResult">
   SELECT PK, MAP FROM BLOB_TEST
 </select>
 


コンストラクタの概要
  BlobInputStreamTypeHandler()
          コンストラクタ。
protected BlobInputStreamTypeHandler(LobHandler lobHandler)
          コンストラクタ。
 
メソッドの概要
protected  java.lang.Object getResultInternal(java.sql.ResultSet rs, int index, LobHandler lobHandler)
          結果を取得する。
protected  void setParameterInternal(java.sql.PreparedStatement ps, int index, java.lang.Object value, java.lang.String jdbcType, LobCreator lobCreator)
          パラメータを設定する。
 java.lang.Object valueOf(java.lang.String s)
          文字列を本Handlerが扱う型に変換する。
 
クラス java.lang.Object から継承されたメソッド
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

コンストラクタの詳細

BlobInputStreamTypeHandler

public BlobInputStreamTypeHandler()
コンストラクタ。


BlobInputStreamTypeHandler

protected BlobInputStreamTypeHandler(LobHandler lobHandler)
コンストラクタ。

パラメータ:
lobHandler - LobHandler
メソッドの詳細

setParameterInternal

protected void setParameterInternal(java.sql.PreparedStatement ps,
                                    int index,
                                    java.lang.Object value,
                                    java.lang.String jdbcType,
                                    LobCreator lobCreator)
                             throws java.sql.SQLException
パラメータを設定する。

パラメータ:
ps - セット先のPreparedStatement
index - パラメータのインデックス
value - セットするパラメータ
jdbcType - パラメータのJDBC型
lobCreator - 利用するLobCreator
例外:
java.sql.SQLException - SQL例外

getResultInternal

protected java.lang.Object getResultInternal(java.sql.ResultSet rs,
                                             int index,
                                             LobHandler lobHandler)
                                      throws java.sql.SQLException
結果を取得する。

パラメータ:
rs - 取得元のResultSet
index - ResultSetのインデックス
lobHandler - 利用するLobHandler
戻り値:
取得結果
例外:
java.sql.SQLException - SQL例外

valueOf

public java.lang.Object valueOf(java.lang.String s)
文字列を本Handlerが扱う型に変換する。

パラメータ:
s - 文字列
戻り値:
Handlerが扱う型のインスタンス