MyBatis - 按枚号选择数据作为序数

问题描述 投票:0回答:1

我有一个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,但这没有任何意义。

任何提示赞赏

enums mybatis
1个回答
0
投票

你应该在mybatis-config.xml中为你的枚举类注册EnumOrdinalTypeHandler

<typeHandlers>
        <typeHandler handler="org.apache.ibatis.type.EnumOrdinalTypeHandler" javaType="com.yourpackage.OrderStatus "/>
</typeHandlers>
© www.soinside.com 2019 - 2024. All rights reserved.