java - 如何将对象或分组参数传递给 SQL IN 子句?
问题描述
我需要使用 JPA 通过匹配表中的 2 个分组参数来查找记录,但我的问题是我不知道如何在 SQL 中传递对象或分组参数,如果可能的话。
假设我们有 User 表:
USER_TABLE
name VARCHAR,
email VARCHAR,
address VARCHAR
我需要找到分组名称和电子邮件匹配的所有用户。像这样的东西:
SELECT FROM USER_TABLE
WHERE (name, email)
IN (('John', 'john@mail'), ('Oliver', 'oliver@mail'));
它在 SQL 工具中工作,但现在我需要从 Java 使用这个 SQL
为此,我对其进行了更新以接受参数
SELECT FROM USER_TABLE
WHERE (name, email)
IN (?);
所以我的问题是如何传递参数或将它们分组?
我试图创建一个参数,如下所示,但它不起作用,因为它不是有效类型
String param = "('John', 'john@mail'), ('Oliver', 'oliver@mail')";
db.execute(sql, param)
这有可能吗?
解决方案
你这样做:
SELECT FROM USER_TABLE
WHERE (name, email)
IN ((?, ?), (?, ?));
每个参数代替单个标量值,而不是值列表,也不是任何其他 SQL 语法(如括号)。您需要将所有括号放入准备好的语句中,然后仅对值使用参数。
推荐阅读
- python - 情绪分析逻辑回归的错误输入形状
- python - 将值返回到 tkinter 接口
- ios - 按钮上有两种颜色(快速)
- python-3.x - 从每行数据框的字符串列表中创建一个新的数据框
- c++ - 如何使用 doxygen 在 markdown 中自动创建指向 C++ 类的链接?
- php - Laravel 7 Vue Dropzone - 无法显示存储中的图像。文件名没有上传到 phpmyadmin
- sapui5 - 私人 UI5 开发
- java - 2D Array number grid with for and if
- python-3.x - 覆盖 __getitem__
- python - 如何修补函数的返回值,但仍然在 python unittest 中得到它的副作用