如何在MyBatis中将整数数组传递给IN子句

我的Mybatis中有一个查询,其中包含一个IN子句,该子句基本上是一组Id(整数)

我现在停留在如何将一个Integer数组传递给此IN子句上,以便它提取正确的记录。尝试通过将一个包含ID的String传递给IN子句,但这无法按预期工作。

下面的代码示例

Mybatis方法使用注释

@Select(SEL_QUERY)

@Results(value = {@Result(property="id",column="ID")})

List<Integer> getIds(@Param("usrIds") Integer[] usrIds);

询问

select distinct ID from table a where a.id in ( #{usrIds} )

方法调用

Integer[] arr = new Integer[2];

arr[0] = 1;

arr[1] = 2;

mapper.getIds(arr)

这不起作用,当我调用mapper方法时,Mybatis引发错误

有什么建议吗

回答:

在动态SQL MyBatis的用户指南对如何使用foreach循环来构建查询字符串,它适用于列表和数组的例子。

在3.2版之前,您必须使用xml配置来使用动态sql,对于较新的版本,还应该可以在注释中使用动态sql。

<select id="selectPostIn" resultType="domain.blog.Post">

SELECT *

FROM POST P

WHERE ID in

<foreach item="item" index="index" collection="list"

open="(" separator="," close=")">

#{item}

</foreach>

</select>

以上是 如何在MyBatis中将整数数组传递给IN子句 的全部内容, 来源链接: utcz.com/qa/431899.html

回到顶部