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 & IEnum> extends BaseTypeHandler{ private final Class type; public EnumCodeTypeHandler(Class 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); } }