0
0

More than 1 year has passed since last update.

MyBatis GeneratorでBLOBをbyte[]ではなくInputStreamとして出力する

Last updated at Posted at 2023-01-04

概要

MyBatis Generatorでデフォルトの設定のままModel/Mapper一式を生成すると、DB上でBLOBで持っているカラムがModel上でbyte[]型になってしまいます。
byte[]型の代わりにInputStream型で出力させる方法を備忘録として書き残しておきます。

GitHubに実際のリポジトリ例も置いてあります。
https://github.com/ishioka0222/spring-boot-file-upload-download

手順

MySQLで以下のようなDDLで生成されるFILEテーブルがあるとします。

schema.sql
CREATE TABLE DEMODB.FILE (
    TYPE_ID INT NOT NULL PRIMARY KEY,
    NAME VARCHAR(256) NOT NULL,
    CONTENT LONGBLOB NOT NULL
);

このとき、MyBatis GeneratorのgeneratorConfig.xmlの中に設定を追加します。
以下では、DEMODB.FILEテーブルのCONTENT列をInputStreamで保持するように設定しています。

generatorConfig.xml
...
<table schema="DEMODB" tableName="FILE">
    <property name="useActualColumnNames" value="true" />
    <columnOverride column="CONTENT"
        javaType="java.io.InputStream"
        typeHandler="org.apache.ibatis.type.BlobInputStreamTypeHandler" />
</table>
...

この状態でMyBatis Generatorを実行すると、生成されたModelが以下のようにCONTENT列をInputStream型で保持するようになります。

package com.example.demo.model;

import java.io.InputStream;

public class File {

    ...

	/**
	 * This field was generated by MyBatis Generator. This field corresponds to the database column file.CONTENT
	 * @mbg.generated
	 */
	private InputStream CONTENT;

    ...
0
0
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
0
0