Mybatisで暗黙の型変換

Mybatisで暗黙の型変換

MyBatisでの暗黙の型変換について説明します。

暗黙の型変換とは

MyBatisでは、SQL文のパラメータや結果セットのデータ型が異なる場合に、JavaとSQL間での型変換が行われます。
これを「暗黙の型変換」と呼びます。
MyBatisは、SQL文に指定された型とJavaの型が一致しない場合でも、自動的に適切な変換を行います。

例: test_userテーブルを使った型変換

例えば、test_userというテーブルがあり、次のようなSQL文があるとします。

SELECT * FROM test_user WHERE user_id = #{userId}

ここで、userIdはJava側のInteger型の変数とします。
一方で、SQLのuser_idカラムはBIGINT型だとします。
この場合、MyBatisはInteger型のuserIdを自動的にBIGINT型に変換してSQL文を実行します。
逆に、結果セットから取得したBIGINT型の値はInteger型のプロパティに自動的に変換されます。

別の例: test_orderテーブルを使った型変換

さらに、test_orderというテーブルにorder_dateというDATE型のカラムがあるとします。
JavaのLocalDate型のプロパティにマッピングする場合、MyBatisはLocalDateとDATE型の間での変換を自動的に行います。
SQL文は以下のようになります。

SELECT * FROM test_order WHERE order_date = #{orderDate}

ここで、orderDateはLocalDate型の変数です。
MyBatisは、LocalDate型の値をDATE型に変換してSQL文を実行します。

まとめ

MyBatisの暗黙の型変換機能により、JavaとSQLの型が異なっていても、手動で型変換を行う必要がありません。
これにより、データの型変換を気にせずに、簡単にデータベースとのやり取りができます。