MyBatis 在Plus中,TypeHandler可以自定义,以处理特殊的类型转换。以下是如何定制一个 TypeHandler 的步骤:
我们需要创造一个实现 org.apache.ibatis.type.TypeHandler接口类。这一类需要实现以下方法:
- setParameter(PreparedStatement ps, int i, T parameter, JdbcType jdbcType): 设置参数。
- getResult(ResultSet rs, String columnName): 从结果中获取数据。
- getResult(CallableStatement cs, int columnIndex): 从存储过程中获取数据。
1.将 java.util.Date 转换为java.util.String 字符串的 TypeHandler
import org.apache.ibatis.type.BaseTypeHandler;import org.apache.ibatis.type.JdbcType;import org.apache.ibatis.type.TypeHandler;import java.sql.*;import java.util.*;public class DateToStringTypeHandler extends BaseTypeHandler<Date> { @Override public void setNonNullParameter(PreparedStatement ps, int i, Date parameter, JdbcType jdbcType) throws SQLException { ps.setString(i, parameter.toString()); } @Override public Date getNullableResult(ResultSet rs, String columnName) throws SQLException { return new Date(rs.getString(columnName)); } @Override public Date getNullableResult(ResultSet rs, int columnIndex) throws SQLException { return new Date(rs.getString(columnIndex)); } @Override public Date getNullableResult(CallableStatement cs, int columnIndex) throws SQLException { return new Date(cs.getString(columnIndex)); }}
2.在 MyBatis Plus 在配置文件中注册 TypeHandler
config.getTypeHandlerRegistry().register(DateToStringTypeHandler.class);
这样,当SQL 查询返回日期类型的数据时,MyBatis Plus 使用自定义的Datetostringtypehandler 将日期转换为字符串。
