gpt4 book ai didi

java - 如何将整数数组传递给 MyBatis 中的 IN 子句

转载 作者:IT老高 更新时间:2023-10-28 20:45:34 26 4
gpt4 key购买 nike

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

我现在被困在如何将整数数组传递给这个 IN 子句,以便它提取正确的记录。尝试通过将包含 ID 的字符串传递给 IN 子句,但这没有按预期工作。

下面的代码示例

使用Annotations的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)

这个不行,Mybatis在我调用mapper方法的时候报错

有什么建议

最佳答案

myBatis User Guide on Dynamic SQL有一个关于如何使用 foreach 循环来构建查询字符串的示例,该字符串适用于列表和数组。

在发布 3.2 之前,您必须使用 xml 配置才能使用动态 sql,对于较新的版本应该也可以使用 dynamic sql in annotations .

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

关于java - 如何将整数数组传递给 MyBatis 中的 IN 子句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8754814/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com