我有一个ENUM课程
private OrderStatus status;
和sql
<select id="getOrder" parameterType="map" resultMap="OrderMap">
SELECT * FROM Order WHERE
status = #{status, typeHandler=org.apache.ibatis.type.EnumOrdinalTypeHandler}
</select>
和服务
@Override
public Order getOrder(OrderStatus status) {
return this.orderMapper.getOrder(status);
}
在插入或更新SQL工作正常,但在选择中发生错误
抛出异常[嵌套异常是org.apache.ibatis.type.TypeException:使用根本原因调用处理程序类org.apache.ibatis.type.EnumOrdinalTypeHandler的构造函数失败] java.lang.IllegalArgumentException:Object不表示枚举类型。
我可以使用status.ordinal()将参数传递给SQL,但这没有任何意义。
任何提示赞赏
你应该在mybatis-config.xml中为你的枚举类注册EnumOrdinalTypeHandler
<typeHandlers>
<typeHandler handler="org.apache.ibatis.type.EnumOrdinalTypeHandler" javaType="com.yourpackage.OrderStatus "/>
</typeHandlers>