重写typeHandlers来处理不支持的或非标准的类型

285 阅读1分钟

① 定义转换类继承类BaseTypeHandler

public class MyDateTypeHandler extends BaseTypeHandler<Date> {

有二种方法,getNullableResult有三种实现方法,set将java类型转化为jdbc类型,get将jdbc类型转化为java

② 覆盖4个未实现的方法,其中setNonNullParameter为java程序设置数据到数据库的回调方法,getNullableResult为查询时 mysql的字符串类型转换成 java的Type类型的方法


{

preparedStatement.setString(i,date.getTime()+"");

}

public Date getNullableResult(ResultSet resultSet, String s) throws SQLException {

return new Date(resultSet.getLong(s));

}

public Date getNullableResult(ResultSet resultSet, int i) throws SQLException {

return new Date(resultSet.getLong(i));

}

public Date getNullableResult(CallableStatement callableStatement, int i) throws SQLException {

return callableStatement.getDate(i);

}

}

③ 在MyBatis核心配置文件中进行注册


<typeHandler handler="com.itheima.typeHandlers.MyDateTypeHandler"></typeHandler>

</typeHandlers>

④ 测试转换是否正确

user.setBirthday(new Date());

userMapper.add2(user);