| New file | 
|  |  |  | 
|---|
|  |  |  | 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); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|