1. 程式人生 > >springboot中mybatis定義型別轉換器

springboot中mybatis定義型別轉換器

import org.apache.ibatis.type.JdbcType;
import org.apache.ibatis.type.TypeHandler;

import java.sql.CallableStatement;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

/**
 * 定義database是bit型別轉換為bean為String型別
 * create by freeOfFlying on 2018/7/26 0026
 */
public class SmsTypeHandler implements TypeHandler{

    @Override
    public void setParameter(PreparedStatement preparedStatement, int i, Object o, JdbcType jdbcType) throws SQLException {
        String str=(String)o;
        String value = str.equals("開啟") ? "1" : "0";
        preparedStatement.setString(i, value);
    }

    @Override
    public Object getResult(ResultSet resultSet, String s) throws SQLException {
        Byte aByte=resultSet.getByte(s);
        String str="關閉";
        if(aByte==1){
            str = "開啟";
        }
        return str;
    }

    @Override
    public Object getResult(ResultSet resultSet, int i) throws SQLException {
        Byte aByte=resultSet.getByte(i);
        String str="關閉";
        if(aByte==1){
            str = "開啟";
        }
        return str;
    }

    @Override
    public Object getResult(CallableStatement callableStatement, int i) throws SQLException {
        Byte aByte=callableStatement.getByte(i);
        String str="關閉";
        if(aByte==1){
            str = "開啟";
        }
        return str;
    }
}

mapper.xml檔案中 

<resultMap id="userList" type="...">
        ...
        <result property="sms" column="is_sms" javaType="java.lang.String" jdbcType="BIT" typeHandler="SmsTypeHandler"/>
</resultMap>

application.yml中

mybatis:
  type-handlers-package: ...
  type-aliases-package: ...