首页 > 解决方案 > 有没有办法在 MyBatis 的 foreach 中使用枚举序号

问题描述

我正在尝试在 foreach 循环中使用 mybatis 动态过滤选择查询。

这是我的 xml 映射器中的一个示例:

<if test="array!= null and array.length > 0">
   AND arrayValCol IN
      <foreach item="item" collection="array" separator="','" open="('" close="')">
         ${item}
      </foreach>
</if>

但是该数组包含枚举作为值,我在 mybatis 文档或谷歌中找不到任何解决方案。

有没有办法解决这个问题?

标签: javaxmlmybatis

解决方案


<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>

推荐阅读