typeHandlers 元素
每当MyBatis 设置参数到PreparedStatement 或者从ResultSet 结果集中取得值时,就会使
用TypeHandler 来处理数据库类型与java 类型之间转换。下表描述了默认的TypeHandlers。
您能够重写类型处理器(type handlers),或者创建您自己的类型处理器去处理没有被支持
的或非标准的类型。要做到这一点,只要实现TypeHandler 接口(org.mybatis.type),并且将您
的TypeHandler 类映射到java 类型和可选的JDBC 类型即可。例如:
// ExampleTypeHandler.java public class ExampleTypeHandler implements TypeHandler { public void setParameter( PreparedStatement ps, int i, Object parameter, JdbcType jdbcType) throws SQLException { ps.setString(i, (String) parameter); } public Object getResult( ResultSet rs, String columnName) throws SQLException { return rs.getString(columnName); } public Object getResult( CallableStatement cs, int columnIndex) throws SQLException { return cs.getString(columnIndex); } }配置文件:
// MapperConfig.xml <typeHandlers> <typeHandler javaType="String" jdbcType="VARCHAR"handler="org.mybatis.example.ExampleTypeHandler"/> </typeHandlers>
使用上面的TypeHandler 将会重写已经存在的用来处理java 的String 属性、VARCHAR 参数
和结果集的类型处理器。注意,MyBatis 并不会通过数据库的元数据来确认类型,所以您必须指
定它的一个类型处理器,用于将VARCHAR 字段的参数和结果映射到正确的类型上。这是因为
MyBatis 在语句的执行之前都不知道它要处理的数据类型是什么。