typeMappingMap

typeMappingMapとは?

JDBC型とプログラム型を関連付ける設定をするDBFluteプロパティ。DBFluteクライアントの dfprop 配下の typeMappingMap.dfprop という名前のテキストファイルです。主に JDBCタスク、Sql2Entity タスクから参照されます。

実は、裏技でDBデータ型とJDBC型を関連付けることもできます。

このプロパティは TwoEdgedSword 扱いです。厳重注意のもと 利用して下さい。

プロパティ

map型プロパティ で、JDBC型とプログラム型の関連を key-value 形式で定義します。

typeMappingMapの仕様 @typeMappingMap.dfprop
map:{
    ; [JDBC-type] = [program-type]
    ...
}

デフォルトのJDBC型とプログラム型のマッピング表を参考にしながら設定して下さい。

このプロパティは、本当にいざっっっ、てときに利用します。通常はデフォルトのままで利用して下さい。 このプロパティの設定内容によっては正常に動作しなくなる可能性もありますので、利用には細心の注意を払って下さい。

自動マッピング

NUMERIC型とDECIMAL型は、桁数や小数点の有無などを自由に選択できる型(であることが多い)です。これら型を全て一律 BigDecimal にするのではなく、桁数や小数点の有無の情報をもとに自動でマッピングする型を変えることができます。

プログラム型を指定する部分で $$AutoMapping$$ と指定します。

自動マッピングの指定 @typeMappingMap.dfprop
map:{
    ; NUMERIC = $$AutoMapping$$
    ; DECIMAL = $$AutoMapping$$
    ...
}

NUMERIC と DECIMAL については、セットアップデフォルトとして自動マッピングが付与 されます。

自動マッピングの仕様は以下の通りです。

NUMERIC( 1 - 9 , 0)
INTEGER
NUMERIC(10 - 18 , 0)
BIGINT
NUMERIC(19 - 38 , 0)
NUMERIC
NUMERIC( 1 - 38 , 2)
NUMERIC
DECIMAL( 1 - 9 , 0)
INTEGER
DECIMAL(10 - 18 , 0)
BIGINT
DECIMAL(19 - 38 , 0)
DECIMAL
DECIMAL( 1 - 38 , 2)
DECIMAL

DBデータ型とJDBC型のマッピング

$$[DBデータ型の名前]$$ に対してJDBC型を指定 することで、DBデータ型とJDBC型のマッピングができます。

主には、未サポートのDBデータ型を扱えるようにする場合に利用します。

typeMappingMapのDBデータ型マッピングの仕様 @typeMappingMap.dfprop
map:{
    ; $$[DB data type]$$ = [JDBC type]
    ...
}
e.g. CLOBをなぜかDATE型にマッピング @typeMappingMap.dfprop
map:{
    ; $$CLOB$$ = DATE
    ...
}

独自のJDBC型にマッピングすることもできます。存在しないJDBC型を指定された場合は、内部的にその新しい型を取り込んで認識できるようにします。 その場合は、新しいJDBC型のプログラム型へのマッピングも同時に指定します。

e.g. CLOBをKOLOB型(新しい型)にマッピング (KOLOB型のマッピングも設定) @typeMappingMap.dfprop
map:{
    ; $$CLOB$$ = KOLOB
    ; KOLOB = com.example.type.KorondeItai
    ...
}

このように、指定したDBデータ型を 完全に独自のプログラム型にマッピング することもできます。但し、独自のプログラム型に対応する独自の ValueType を別途 DBFluteConfig にて設定する必要があります。

JDBC型とプログラム型のデフォルトマッピング

JDBC型とプログラム型のデフォルトのマッピング
 --------------------------------------------------------
 | JDBC Type     | Java Native          | CSharp Native |
 | ------------------------------------------------------
 | CHAR          | java.lang.String     | String        |
 | VARCHAR       | java.lang.String     | String        |
 | LONGVARCHAR   | java.lang.String     | String        |
 | NUMERIC       | java.math.BigDecimal | decimal?      |
 | DECIMAL       | java.math.BigDecimal | decimal?      |
 | TINYINT       | java.lang.Integer    | int?          |
 | SMALLINT      | java.lang.Integer    | int?          |
 | INTEGER       | java.lang.Integer    | int?          |
 | BIGINT        | java.lang.Long       | long?         |
 | REAL          | java.math.BigDecimal | decimal?      |
 | FLOAT         | java.math.BigDecimal | decimal?      |
 | DOUBLE        | java.math.BigDecimal | decimal?      |
 | DATE          | java.util.Date       | DateTime?     |
 | TIME          | java.sql.Time        | DateTime?     |
 | TIMESTAMP     | java.sql.Timestamp   | DateTime?     |
 | BIT           | java.lang.Boolean    | bool?         |
 | BOOLEAN       | java.lang.Boolean    | bool?         |
 | BINARY        | byte[]               | byte[]        |
 | VARBINARY     | byte[]               | byte[]        |
 | LONGVARBINARY | byte[]               | byte[]        |
 | ARRAY         | *Unsupported         | *Unsupported  |
 | UUID          | java.util.UUID       | *Unsupported  |
 --------------------------------------------------------