LoginSignup
8
8

More than 5 years have passed since last update.

MyBatis 3.4でBLOB/CLOBのTypeHandlerがサポートされた

Last updated at Posted at 2016-04-29

MyBatis 3.4から、BLOGとjava.io.InputStream、CLOBとjava.io.Reader変換用のTypeHandlerがようやく本家に組み込まれました :smile:
MyBatis 3.3までは、BLOBとbyte[]、CLOBとjava.lang.String変換用のTypeHandlerはありましたが、大きなデータを扱うことが多いBLOBとCLOBで利用できるケースは稀で、皆さん自作していたのではないでしょうか?
実際に、私は自作していました・・・

特に使い方を説明をする必要はないと思いますが・・・簡単に説明しておきましょう。

動作検証バージョン

  • MyBatis 3.4.0

MyBatis 3.4で追加されたBLOG/CLOB用のTypeHandlerについて

追加されたTypeHandlerは、JDBC 4.0 (Java 1.6)で追加されたAPIを使用することで、BLOGとjava.io.InputStream、CLOBとjava.io.Readerの変換を実現しています。
そのため、JDBC 4.0の該当メソッドが仕様通りに実装されていないJDBCドライバーでは使うことができません。

Note: JDBC 4.0のサポート状況
BLOBとCLOBを使う場合は、JDBCドライバーのサポート状況を確認してください。MyBatisが使っているメソッドがサポートされていない場合は、残念ながらTypeHandlerを自作する必要があります。
最近のJDBCドライバーであれば、だいたいサポートしていると思いますが、PostgreSQLでは最近BLOBがサポートされました。(なお、当時はCLOBはサポートされていませんでしたが、最近はサポートされているかもしれません・・・)

TypeHandlerの適用方法

MyBatis組み込みのBLOB/CLOB用のTypeHandlerを適用したい場合は、JavaBeanのプロパティをInputStreamReaderにするだけです。

public class Profile {
    private int id;
    private String name;
    private InputStream faceImage; // BLOB
    private Reader introductionText; // CLOB

    // ... (Other field and setter/getter)

}

まとめ

JDBC 4.0実装のJDBCドライバーを使っている場合は、MyBatis 3.4にバージョンアップしたら自作のTypeHandlerは不要になります。
私が携わっているプロジェクトでも、自作していたTypeHandlerは削除しました :v:

8
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
8