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

如何使用Spring的JDBCTemplate有效执行IN()SQL查询?

狄英哲
2023-03-14
问题内容

我想知道是否有更优雅的方法来使用Spring的JDBCTemplate进行IN()查询。目前,我正在执行以下操作:

StringBuilder jobTypeInClauseBuilder = new StringBuilder();
for(int i = 0; i < jobTypes.length; i++) {
    Type jobType = jobTypes[i];

    if(i != 0) {
        jobTypeInClauseBuilder.append(',');
    }

    jobTypeInClauseBuilder.append(jobType.convert());
}

这是很痛苦的,因为如果我只有九行用于构建IN()查询的子句。我想要类似预准备语句的参数替换


问题答案:

你需要一个参数源:

Set<Integer> ids = ...;

MapSqlParameterSource parameters = new MapSqlParameterSource();
parameters.addValue("ids", ids);

List<Foo> foo = getJdbcTemplate().query("SELECT * FROM foo WHERE a IN (:ids)",
     parameters, getRowMapper());

仅当getJdbcTemplate()返回类型的实例时,此方法才有效NamedParameterJdbcTemplate



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

  • 问题内容: 如何在Firebase Android中查询SQL IN子句?我想在Firebase Recycler适配器中使用它,以便根据某些条件仅检索某些子级。类似于以下语句: 我需要一个Firebase查询才能在Firebase Recycler适配器中使用它。 问题答案: 我找到了解决方案:我们无法使用。相反,我们必须创建可扩展的自定义适配器。 要将值传递给此适配器,首先我们必须使用检索数据

  • 要在spark sql中运行sql语句以联接PostgreSQL中的两个表,请执行以下操作: 数据库引擎会执行联接操作并发回联接结果吗?或者数据库会将表_1和表_2的所有记录发送给spark job和spark job进行连接吗?是否有一些文档来解释此操作?谢谢

  • 问题内容: 可以请一些人提供如何使用联接编写以下sql查询的方法。我不希望尽量不要使用 in ,我也想替换 where 条件。 我正在使用SQL Server 2008 问题答案: 本文: NOT IN与NOT EXISTS与LEFT JOIN / IS NULL:SQL Server 如果您感兴趣的话。 简而言之,此查询: 可以工作,但是效率不如(或)构造。 您还可以使用以下命令: 这既不使用也

  • 本文向大家介绍MySql中如何使用 explain 查询 SQL 的执行计划,包括了MySql中如何使用 explain 查询 SQL 的执行计划的使用技巧和注意事项,需要的朋友参考一下 explain命令是查看查询优化器如何决定执行查询的主要方法。 这个功能有局限性,并不总会说出真相,但它的输出是可以获取的最好信息,值得花时间去了解,因为可以学习到查询是如何执行的。 1、什么是MySQL执行计划

  • 问题内容: 我正在尝试执行这样的查询: 问题是我要过滤的ID列表不是恒定的,并且每次执行时都必须不同。我还需要转义这些id,因为它们可能来自不受信任的来源,尽管我实际上将转义查询中的所有内容,而不管该来源的可信度如何。 节点的Postgres似乎与绑定参数专门工作:; 如果我具有已知数量的值(),这将起作用,但不能直接用于数组:,因为似乎对数组参数没有任何特殊处理。 根据数组中的项目数动态构建查询