相关疑难解决方法(0)

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

我想知道是否有一种更优雅的方式来使用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());
}
Run Code Online (Sandbox Code Playgroud)

这是非常痛苦的,因为如果我有九行只是为IN()查询构建子句.我想要像准备语句的参数替换

java sql spring jdbc jdbctemplate

172
推荐指数
3
解决办法
17万
查看次数

IN子句中的SQL多列

如果我们需要根据给定列的某些值集查询表,我们可以简单地使用IN子句.

但是如果需要基于多个列执行查询,我们就不能使用IN子句(在SO线程中使用grep).

从其他SO线程,我们可以使用连接或存在子句等来规避这个问题.但是如果主表和搜索数据都在数据库中,它们都可以工作.

E.g
User table:
firstName, lastName, City
Run Code Online (Sandbox Code Playgroud)

给定(firstname,lastName)元组的列表,我需要获取城市.

我可以想到以下解决方案.

1

构造一个选择查询,如,

SELECT city from user where (firstName=x and lastName=y) or (firstName=a and lastName=b) or .....
Run Code Online (Sandbox Code Playgroud)

2

将所有firstName,lastName值上载到临时表中,并在"用户"表和新登台表之间执行连接.

有没有解决这个问题的方法,一般来说解决这个问题的首选是什么?

sql oracle

33
推荐指数
4
解决办法
17万
查看次数

JPA Criteria:包含许多列的子句

我试图使用JPA Criteria API编写以下SQL查询

SELECT * FROM Table1 a
WHERE (a.category, a.priority) IN (
SELECT a1.category, max(a1.priority) FROM Table1 a1 GROUP BY a1.category
)
Run Code Online (Sandbox Code Playgroud)

在功能上,查询选择Table1的元素,每个类别具有最高优先级.

categoryPriority = // defines the pair category/priority
mySubQuery = // defines the subquery
query.where(categoryPriority.in(mySubQuery)
Run Code Online (Sandbox Code Playgroud)

这是我正在寻找的示意图.

定义子查询不是问题,因为它有详细记录.

但我找不到定义这对夫妇的方法(a.category,a.priority).

jpa in-clause criteria-api

3
推荐指数
1
解决办法
2634
查看次数

标签 统计

sql ×2

criteria-api ×1

in-clause ×1

java ×1

jdbc ×1

jdbctemplate ×1

jpa ×1

oracle ×1

spring ×1