我试图在foreach循环中动态地过滤带有mybatis的select查询。
下面是我的xml映射器中的一个示例:
<if test="array!= null and array.length > 0">
AND arrayValCol IN
<foreach item="item" collection="array" separator="','" open="('" close="')">
${item}
</foreach>
</if>但是数组包含枚举作为值,我在mybatis文档或google中找不到任何解决方案。
有没有办法解决这个问题呢?
发布于 2019-10-15 21:04:36
EnumTypeHandler,它在绑定枚举参数时调用name()方法。你需要告诉MyBatis改用EnumOrdinalTypeHandler。#{}代替${}。请参阅FAQ.<if test="array!= null and array.length > 0">
AND arrayValCol IN
<foreach item="item" collection="array" separator="," open="(" close=")">
#{item,typeHandler=org.apache.ibatis.type.EnumOrdinalTypeHandler}
</foreach>
</if>还可以通过在配置中指定defaultEnumTypeHandler来更改默认枚举类型处理程序。
<settings>
<setting name="defaultEnumTypeHandler"
value="org.apache.ibatis.type.EnumOrdinalTypeHandler"/>
</settings>https://stackoverflow.com/questions/58394646
复制相似问题