位置:首頁 > 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 在語句的執行之前都不知道它要處理的數據類型是什麼。