| package com.dy.common.mybatis.envm; | 
|   | 
| import cn.hutool.core.lang.Assert; | 
| import org.apache.ibatis.type.BaseTypeHandler; | 
| import org.apache.ibatis.type.JdbcType; | 
|   | 
| import java.sql.CallableStatement; | 
| import java.sql.PreparedStatement; | 
| import java.sql.ResultSet; | 
| import java.sql.SQLException; | 
|   | 
| public class EnumCodeTypeHandler<E extends Enum<E> & IEnum> extends BaseTypeHandler<E>{ | 
|   | 
|     private final Class<E> type; | 
|   | 
|     public EnumCodeTypeHandler(Class<E> type) { | 
|         Assert.notNull(type , "type argument can not be null"); | 
|         this.type = type; | 
|     } | 
|   | 
|     @Override | 
|     public void setNonNullParameter(PreparedStatement preparedStatement, int i, E e, JdbcType jdbcType) throws SQLException { | 
|         preparedStatement.setByte(i , e.getCode()); | 
|     } | 
|   | 
|     @Override | 
|     public E getNullableResult(ResultSet resultSet, String s) throws SQLException { | 
|         Byte code = resultSet.getByte(s) ; | 
|         return resultSet.wasNull() ? null : EnumUtils.codeOf(this.type , code); | 
|     } | 
|   | 
|     @Override | 
|     public E getNullableResult(ResultSet resultSet, int i) throws SQLException { | 
|         Byte code = resultSet.getByte(i) ; | 
|         return resultSet.wasNull() ? null : EnumUtils.codeOf(this.type , code); | 
|     } | 
|   | 
|     @Override | 
|     public E getNullableResult(CallableStatement callableStatement, int i) throws SQLException { | 
|         Byte code = callableStatement.getByte(i); | 
|         return callableStatement.wasNull() ? null : EnumUtils.codeOf(this.type , code); | 
|     } | 
|   | 
| } |