mybatis中枚举自动转换
public interface CodeBaseEnum {
int getCode ( ) ;
}
public class CodeEnumUtil {
public static < E extends Enum < ? > & CodeBaseEnum> E codeOf ( Class< E> enumClass, int code) {
E[ ] enumConstants = enumClass. getEnumConstants ( ) ;
for ( E e : enumConstants) {
if ( e. getCode ( ) == code)
return e;
}
return null;
}
}
public class EnumTypeHandler < E extends Enum < ? > & CodeBaseEnum> extends BaseTypeHandler < CodeBaseEnum> {
private Class< E> clazz;
public EnumTypeHandler ( Class< E> enumType) {
if ( enumType == null)
throw new IllegalArgumentException ( "Type argument cannot be null" ) ;
this . clazz = enumType;
}
@Override
public void setNonNullParameter ( PreparedStatement ps, int i, CodeBaseEnum parameter, JdbcType jdbcType)
throws SQLException {
ps. setInt ( i, parameter. getCode ( ) ) ;
}
@Override
public E getNullableResult ( ResultSet rs, String columnName) throws SQLException {
return CodeEnumUtil. codeOf ( clazz, rs. getInt ( columnName) ) ;
}
@Override
public E getNullableResult ( ResultSet rs, int columnIndex) throws SQLException {
return CodeEnumUtil. codeOf ( clazz, rs. getInt ( columnIndex) ) ;
}
@Override
public E getNullableResult ( CallableStatement cs, int columnIndex) throws SQLException {
return CodeEnumUtil. codeOf ( clazz, cs. getInt ( columnIndex) ) ;
}
}
mybatis- plus:
mapper- locations: classpath* : / mapper* * Mapper. xml
#typeAliasesPackage: com. busonline. charging. model. ** . *
typeHandlersPackage: com. busonline. charging. enums. EnumTypeHandler
< id column= "charging_state" property= "chargingState" typeHandler= "com.busonline.charging.enums.EnumTypeHandler" / >