H5W3
当前位置:H5W3 > 问答 > 正文

Mybatis的TypeHandler中type字段始终为null?

我编写了一个EnumSet的TypeHandler,首先写了一个父TypeHandler,然后用继承他的子TypeHandler设定enumType,可以看到确实将enumType设定上了,在项目启动时可以看到日志中有,但是在实际转换中enumType始终为null,苦恼….
@Slf4j
@NoArgsConstructor
@AllArgsConstructor
public class BaseArray2EnumHandler<E extends Enum<E>> extends BaseTypeHandler<EnumSet<E>> {
private Class<E> enumType;//<-------罪魁祸首
//    和构造方法应该无关
//    public BaseArray2EnumHandler(Class<E> type) {
//        if (type == null) {
//            throw new NullPointerException("Type argument cannot be null");
//        }
//        this.enumType = type;
//        log.info(enumType.getName());//这里确实能够看到已经设置好Type了,控制台里能看到这个
//    }
@Override
public EnumSet<E> getNullableResult(ResultSet resultSet, String columnName) throws SQLException {
String[] roles = (String[]) resultSet.getArray(columnName).getArray();
EnumSet<E> enumSet = EnumSet.noneOf(enumType);//但是在这里始终为null,特别奇怪
for (String role : roles) {
enumSet.add(Enum.valueOf(enumType, role));
}
return enumSet;
}
}

这是子类

public class AuthArray2EnumHandler extends BaseArray2EnumHandler<Auth> {
public AuthArray2EnumHandler() {
super(Auth.class);
}
}

这是设置Handler的地方

/**
* 角色
*/
@TableField(typeHandler = AuthArray2EnumHandler.class)
private EnumSet<Auth> role;

因为以后可能会有很多EnumSet类型的字段,所以想节省一点代码,希望大佬告诉我一下这个怪东西为啥为null

一个debug的事 – –

回答

本文地址:H5W3 » Mybatis的TypeHandler中type字段始终为null?

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址