Mybatisで数値と文字列を変換する方法
MyBatisで数値と文字列を変換する方法
MyBatisで数値と文字列を相互に変換するには、TypeHandlerを使用します。
TypeHandlerは、MyBatisがデータベースとJavaの間でデータ型を変換する方法をカスタマイズできる仕組みです。
例: 数値を文字列に変換する
1. TypeHandlerの作成
数値を文字列に変換するTypeHandlerを作成します。
package com.example.mybatis.typehandler; import org.apache.ibatis.type.BaseTypeHandler; import org.apache.ibatis.type.JdbcType; import java.sql.CallableStatement; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; public class TestIntegerToStringTypeHandler extends BaseTypeHandler<String> { @Override public void setNonNullParameter(PreparedStatement ps, int i, String parameter, JdbcType jdbcType) throws SQLException { ps.setInt(i, Integer.parseInt(parameter)); } @Override public String getNullableResult(ResultSet rs, String columnName) throws SQLException { return String.valueOf(rs.getInt(columnName)); } @Override public String getNullableResult(ResultSet rs, int columnIndex) throws SQLException { return String.valueOf(rs.getInt(columnIndex)); } @Override public String getNullableResult(CallableStatement cs, int columnIndex) throws SQLException { return String.valueOf(cs.getInt(columnIndex)); } }
2. MyBatis設定ファイルでTypeHandlerを登録
MyBatisの設定ファイルでTypeHandlerを登録します。
<typeHandlers> <typeHandler handler="com.example.mybatis.typehandler.TestIntegerToStringTypeHandler" javaType="String" jdbcType="INTEGER"/> </typeHandlers>
3. 使用例
TestTableMapper.xml:
<select id="selectTestTable" resultType="test.TestTable"> SELECT id, value FROM TestTable WHERE id = #{id} </select>
TestTable.java:
package com.example.mybatis.model; public class TestTable { private int id; private String value; // Getter and Setter }
4. まとめ
この方法で、数値のカラムvalueを文字列としてマッピングできます。
TypeHandlerを使えば、数値から文字列、文字列から数値への変換を自由に行えます。