寫一個轉換類繼承TypeHandler<T>:java
package com.hotent.officeoa.model; import java.sql.CallableStatement; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import org.apache.ibatis.type.JdbcType; import org.apache.ibatis.type.TypeHandler; import org.apache.log4j.Logger; /** * @ClassName MyBooleanTypeHandler * @PackageName com.hotent.officeoa.model * @Description 將Java中的Boolean和jdbc的char之間轉換,Y-true,N-false * @author law * @Date 2016-4-5 上午8:43:32 */ public class MyBooleanTypeHandler implements TypeHandler<Boolean> { private static final Logger logger = Logger.getLogger(MyBooleanTypeHandler.class); /** * 用於在Mybatis獲取數據結果集時如何把數據庫類型轉換爲對應的Java類型 * @param resultSet 當前的結果集 * @param columnName 當前的字段名稱 * @return 轉換後的Java對象 * @throws SQLException */ @Override public Boolean getResult(ResultSet resultSet, String columnName) throws SQLException { return tranferType(resultSet.getString(columnName)); } /** * 用於在Mybatis經過字段位置獲取字段數據時把數據庫類型轉換爲對應的Java類型 * @param resultSet 當前的結果集 * @param arg1 當前字段的位置 * @return 轉換後的Java對象 * @throws SQLException */ @Override public Boolean getResult(ResultSet resultSet, int arg1) throws SQLException { return tranferType(resultSet.getString(arg1)); } /** * 用於Mybatis在調用存儲過程後把數據庫類型的數據轉換爲對應的Java類型 * @param callableStatement 當前的CallableStatement執行後的CallableStatement * @param columnIndex 當前輸出參數的位置 * @return * @throws SQLException */ @Override public Boolean getResult(CallableStatement callableStatement, int columnIndex) throws SQLException { return tranferType(callableStatement.getString(columnIndex)); } /** * 用於定義在Mybatis設置參數時該如何把Java類型的參數轉換爲對應的數據庫類型 * @param preparedStatement 當前的PreparedStatement對象 * @param arg1 當前參數的位置 * @param arg2 當前參數的Java對象 * @param jdbcType 當前參數的數據庫類型 * @throws SQLException */ @Override public void setParameter(PreparedStatement preparedStatement, int arg1, Boolean arg2, JdbcType jdbcType) throws SQLException { if(arg2.equals(Boolean.TRUE)){ preparedStatement.setString(arg1,"Y"); }else{ preparedStatement.setString(arg1,"N"); } } private Boolean tranferType(String str){ if("Y".equalsIgnoreCase(str)){ return Boolean.TRUE; }else{ return Boolean.FALSE; } } }
配置:sql
<typeHandlers> <typeHandler javaType="Boolean" jdbcType="CHAR" handler="com.hotent.officeoa.model.MyBooleanTypeHandler"/> </typeHandlers>
如今,Boolean類型插入數據庫爲‘Y’or'N'數據庫