当前位置: 首页 > 面试题库 >

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

李昌勋
2023-03-14
问题内容

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


 类似资料:
  • 问题内容: 使用的bson功能创建查询时遇到了一些麻烦。我只是想做,但是我不知道怎么做。 我有一个s,并尝试直接传递它: 我看到了另一条建议使用的帖子,但这也不起作用: 我在这里和gh上浏览了他的文档和其他问题,但是大多数涉及切片的问题似乎都是关于将数据分成一个切片,而不是我想要达到的目的。 非常感激任何的帮助。 问题答案: 您最初的建议(通过值)没有缺陷,这样做是有效的。 问题是您使用它来查找和

  • 问题内容: 可以说我有一个SP,其语句如下: 但是数据必须通过包含值字符串的单个变量到达该子句。以下内容链接 但是它不能那样工作。任何想法如何做到这一点? 问题答案: 像这样传递参数值- 。然后,使用FIND_IN_SET函数就足够了-

  • 使用Spring数据MongoDB。我在MongoRepository上定义了这个查询: 由于我想使用运算符,我不能通过方法命名方式构建查询,所以我使用注释。 我已经调试了prints。我将该值修改为,但没有变化。

  • 问题内容: 我想将功能传递给子组件,但出现此错误。 基本上是我想做的。 var ReactGridLayout = require(’react-grid-layout’); 似乎它是在React v16中引入的。因此,将函数从父代传递给子代的正确方法是什么? 问题答案: 我发现出了什么问题。这是因为react-grid-layout。我必须将其余的属性传递给孩子。

  • 如何在不使其成为单独变量的情况下传递数组?例如,我知道这是有效的: 但我不想让数组成为变量,因为它只在这里使用。有没有办法做到这一点:

  • 要将数组参数传递给函数,需指定不带方括号的数组名。例如,如果数组hourlyTemperatures声明如下: int hourlyTemperatures[24]; 则下列函数调用语句: modifyArray(hourlyTemperatutes,24); 将数组 hourlyTemperatures 及其长度传递给函数 modifyArray。将数组传递给函数时,通常也将其长度传递给函数,使