MyBatis提供了TypeHandler接口,可以自定義處理Java類型與數據庫列類型之間的轉換。要使用TypeHandler,需要按照以下步驟操作:
public class MyTypeHandler implements TypeHandler<MyType> {
@Override
public void setParameter(PreparedStatement ps, int i, MyType parameter, JdbcType jdbcType) throws SQLException {
ps.setString(i, parameter.toString());
}
@Override
public MyType getResult(ResultSet rs, String columnName) throws SQLException {
return MyType.valueOf(rs.getString(columnName));
}
@Override
public MyType getResult(ResultSet rs, int columnIndex) throws SQLException {
return MyType.valueOf(rs.getString(columnIndex));
}
@Override
public MyType getResult(CallableStatement cs, int columnIndex) throws SQLException {
return MyType.valueOf(cs.getString(columnIndex));
}
}
<typeHandlers>
<typeHandler handler="com.example.MyTypeHandler"/>
</typeHandlers>
@Results({
@Result(property = "myField", column = "my_column", javaType = MyType.class, typeHandler = MyTypeHandler.class)
})
這樣,在查詢結果映射時,MyBatis會自動調用MyTypeHandler來處理MyType類型的數據與數據庫列類型之間的轉換。