位置:首页 > Java技术 > MyBatis在线教程 > typeHandlers元素

typeHandlers元素

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 在语句的执行之前都不知道它要处理的数据类型是什么。