第一步:定义转换类继承BaseTypeHandler ,并且覆盖4个未实现的方法
setNonNullParameter为数据到数据库的回调方法
getNullableResult为查询时mysql的字符串类型转换成java的Type类型的方法
例如:定义一个DateTypeHandler 类进行继承,实现将Date数据类型的java数据存入数据库中提前声明转为Long型毫秒值
public class DateTypeHandler extends BaseTypeHandler<Date> {
@Override
public void setNonNullParameter(PreparedStatement preparedStatement, int i, Date date, JdbcType jdbcType) throws SQLException {
long time = date.getTime();
preparedStatement.setLong(i,time);
}
@Override
public Date getNullableResult(ResultSet resultSet, String s) throws SQLException {
long aLong = resultSet.getLong(s);
Date date = new Date(aLong);
return date;
}
@Override
public Date getNullableResult(ResultSet resultSet, int i) throws SQLException {
long aLong = resultSet.getLong(i);
Date date = new Date(aLong);
return date;
}
@Override
public Date getNullableResult(CallableStatement callableStatement, int i) throws SQLException {
long aLong = callableStatement.getLong(i);
Date date = new Date(aLong);
return date;
}
}
第二步:在mybatis核心配置文件中进行注册
<typeHandlers>
<!--自定义一个类型处理器继承BaseTypeHandler<T>-->
<typeHandler handler="com.ermu.handler.DateTypeHandler" />
</typeHandlers>