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