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

如何在iBatis(myBatis)中使用批注进行IN查询?

贡建修
2023-03-14
问题内容

我们只想在MyBatis中使用注解;我们实际上是在尝试避免使用xml。我们正在尝试使用“ IN”子句:

@Select("SELECT * FROM blog WHERE id IN (#{ids})") 
List<Blog> selectBlogs(int[] ids);

MyBatis似乎无法挑选出整数数组并将其放入结果查询中。似乎“轻声失败”,我们没有得到任何结果。

看起来我们可以使用XML映射来完成此操作,但我们确实希望避免这种情况。有正确的注释语法吗?


问题答案:

我相信这是jdbc准备的语句的细微差别,而不是MyBatis。有一个链接在这里解释这个问题,并提供各种解决方案。不幸的是,这些解决方案都不适合您的应用程序,但是,对于理解准备好的语句对“
IN”子句的局限性,仍然是一个很好的阅读方法。在特定于DB的方面可以找到一个解决方案(可能不是最理想的)。例如,在postgresql中,可以使用:

"SELECT * FROM blog WHERE id=ANY(#{blogIds}::int[])"

“ ANY”与“ IN”相同,“ :: int []”类型将参数转换为整数数组。输入到该语句中的参数应类似于:

"{1,2,3,4}"


 类似资料:
  • 问题内容: 我正在使用iBATIS创建选择语句。现在,我想用iBATIS实现以下SQL语句: 使用以下方法,语句准备不正确,并且没有结果返回: iBATIS似乎重新构建了该列表,并尝试将其解释为字符串。 如何正确使用IN子句? 问题答案: 这是一篇博客文章,回答您的问题: iBatis:使用SQL IN关键字支持数组或列表参数 在Java中,您应该传入java.util.List。例如

  • 我第一次尝试执行批量插入/更新操作。我正在使用Mybatis注释(映射器)执行与数据库相关的操作。 我有一个@Param,它是列表 映射器将具有: ****我不确定到底是做什么的。如果有人能对它有所了解,我会非常感激。**** 我在关注@Repository- 例如Controller类有: 此外,有多少批量插入的记录以上的方法将能够处理?(记录可以范围从5000到50000) 附言:-这也是我第

  • 问题内容: 我想知道如何使用MyBatis 3和Spring 3通过我的插入语句实现批处理操作? 例如,这是当前正在执行的操作: spring.xml: MyService.xml: MyService.java: MyController.java: 免责声明:这只是用于演示目的的伪代码 那么我该怎么做才能将其变成批处理流程呢? 理想情况下,我希望能够以最少的“侵入”代码来做到这一点,即更优先使

  • 问题内容: 我有一个xml映射器-一个选择和一个结果映射器。它的工作没有问题。但是我想使用注释。我的地图绘制者: 所以我确实是这样 我不明白如何在不执行另一个sql查询的情况下通过注释映射我的集合。作为所有示例,我假设需要再执行一个查询。请帮忙。 问题答案: AFAIK,如果您使用带注释的映射,则不能使用。 在文档中,有关的用法, 到复杂类型的collection属性的映射。属性:select是可

  • 问题内容: Go对于此SQL查询中的第二个参数想要什么。我正在尝试在postgres中使用查找。 我真正想要的是: 问题答案: 查询只是使用varargs来替换sql中的参数,因此,在您的示例中,您只需要执行 例如,这个和第二个示例的内容是动态的,那么您将 如果“ IN”部分具有可变的args,则可以执行(播放)

  • 问题内容: 我有以下豆类 以及相应的编组代码 我想使属性在运行时可配置,我想在运行时在“ num”上指定@xmltransient而不进行编译。我该怎么办? 问题答案: 注意: 我是 EclipseLink JAXB(MOXy)的 负责人,并且是 JAXB 2(JSR-222) 专家组的成员。 MOXy JAXB实现提供了通过其扩展在运行时操纵映射元数据的功能。有关详细示例,请参见: http:/