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

JDBC:在设置条件下:我可以将集合作为单个参数传递吗?

宰父嘉胜
2023-03-14
问题内容

在JDBC中,我可以对查询参数使用问号,如下所示:

"SELECT * FROM users WHERE login = ?"

然后

ps.setString(1, "vasya");

但是如何查询登录列表:

"SELECT * FROM users WHERE login IN ?"

假设我有

List<String> logins = ...

我应该在那输入什么:

ps.setWhat(1, what);

我可以将查询重写为:

"SELECT * FROM users WHERE login = ? OR login = ? OR login = ?"

然后在循环中调用setString,但我想知道是否可以将一组元素作为单个参数传递给查询。

也许有特定于供应商的扩展?


问题答案:

有特定于供应商的方法可以执行此操作,因此最好了解您使用的数据库。我知道PostgreSQL和H2的解决方案。我在H2数据库中实现了此功能,所以这是我最了解的:

H2数据库

PreparedStatement prep = conn.prepareStatement(
  "select * from users where login in (select * from table(x int = ?))");
prep.setObject(1, new Object[] { "1", "2" });
ResultSet rs = prep.executeQuery();

PostgreSQL的

WHERE login = ANY(?)

然后使用PreparedStatement.setArray(..)将参数设置为值数组(不是H2的setObject)。



 类似资料:
  • 问题内容: 我在Tomcat上有一个Web应用程序,该应用程序处理数据库连接池,并使用Spring JDBCTemplate执行查询。有人要求我实现一个状态页面,该页面将由心跳过程进行监视,以确定服务器是否一切正常。 作为此操作的一部分,我想执行一个数据库查询以确定与数据库的连接是否正常。理想情况下,由于它只是“从中选择1”,因此我希望它能在10秒内快速返回,以指示如果DB在那段时间内没有响应,则

  • 问题内容: 在Java中,我可以做类似的事情 然后稍后在方法中“运行”代码。处理(匿名内部类)很痛苦,但是可以做到。 Go是否有可以促进函数/回调作为参数传递的内容? 问题答案: 是的,请考虑以下示例: 播放:http://play.golang.org/p/XNMtrDUDS0 导览:https : //tour.golang.org/moretypes/25(函数闭包)

  • 我希望能够传递一个CSV文件,其中包含JMeter测试(CSV数据集配置)要使用的参数,而不是将CSV数据源硬编码为JMeter检测的一部分。这可能吗?我似乎在JMeter的命令行选项列表中的任何位置都找不到这一点。 JMeter 数据集配置参考。

  • 问题内容: 我试图衡量几种方法的执行时间。所以我在想做一个方法,而不是多次重复相同的代码。 这是我的代码: 假设我有,如何使用它来衡量执行时间? 问题答案: 方法不是Java中的一流对象,因此不能将它们作为参数传递。您可以将方法调用包装在扩展例如接口的匿名类中:

  • 问题内容: 我希望能够创建如下功能: 这里的问题是,在方法中将其视为,因此是的单个参数,而我希望每个in 都作为新参数传递。由于也是带有可变参数的方法,因此应该可行。 如果这不可能,是否有类似的方法?在那种情况下,我可以先使用一个新数组,然后将其传递给该方法。 问题答案: 可变参数方法的基本类型 是 。Sun以这种方式添加了varargs,以保持向后兼容性。 所以,你应该只能够预先考虑到和呼叫。

  • 不确定这件事可以完成,但我想创建一个新的子类,将父类和其他附加参数作为参数传递。 例如,如果我有: 对于lombo,有没有一个构建器让我创建一个子类,将父类和缺少的值作为参数传递? 如果我能写出这样的东西会更容易: