mysql - Hibernate多次查询或通过一次查询获取相关行并在java中处理它们

标签 mysql sql hibernate select

我遇到了问题;哪种方法更好。

我必须查询数据库 10000 次(或更多)才能准确获取 10000 行并显示它们。

我可以通过仔细编写一个长查询并在本地排列它们然后显示它们,在对数据库的一次查询中执行相同的操作。

例如。 我有这样的人的名字

Id Name
1 Amit
2 Mohan
3 Rohan
4 John
5 Kuneel
6 Monu
7 Savita
8 Hari
9 Raju
10 Sita

List one="Amit","Mohan","Rohan","John"
List two="Kuneel","Monu","Savita"
List three="Hari","Raju"
List n="Sita",...

对于第一个列表,我将使用 or 运算符进行查询,并且将返回整数列表。 我可以查询以整数列表的形式获取所有列表的 ID,然后依赖它们并安排它们显示 ID吗? 我的问题是我应该单独查询所有列表还是在一个查询中执行此操作然后安排结果。 请帮忙。任何链接、线索或引用都是值得重视的。 谢谢。

Mysql 查询: 用于获取列表中的 ID

Select Id from User where(name) IN("Amit","Mohan","Rohan",John");

现在,在 HQl 中,等效查询将返回整数列表。 此外,名称将存储在字符串数组中,并将用于生成查询字符串。

但我想这样做:

 Select Id from User where(name) IN("Amit","Mohan","Rohan","John","Kuneel",
"Monu","Savita","Hari","Raju","Sita","& other names");

运行此查询返回的字符串列表可以看作是前四个 id 对应于第一个列表(List one),接下来的三个 id 对应于第二个等等。此外,列表的第一个 id 对应于第一个列表的名字第一个列表,即列出一个

请告诉您是否需要更多解释。

谢谢

最佳答案

您需要使用与 hibernate 等效的 sql IN 子句。我不确定你的 JPA 配置是什么,但很可能在下面。

List<?> listForParameters  = //initialize the list
Session session = //obtain the session 
Criteria crit = session.createCriteria(YourEntityClass.class);
crit.add(Restrictions.in("ParameterName", listForParameters  ));
List<?> list = crit.list();

另请参阅

Restrictions api

Criteria Queries

关于mysql - Hibernate多次查询或通过一次查询获取相关行并在java中处理它们,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19130905/

相关文章:

database - NHibernate 多线程 session 管理

java - 使用 @IndexColumn 会导致 seq_num 为 0

java - 如何通过 Hibernate 按页查询到表?

php - 使用 php 将数据从 cron 中的 "raw"表传输到优化的 MySQL 表中

c# - 性能: Lots of queries or lots of processing?

php - mysql 对应 php 的 in_array

sql - SSRS报告不显示数据

sql - 如何用 R 分析维基百科文章数据库?

java - 为什么我们设置属性 Hibernate.Dialect?

python - python 脚本中的 mySQL 查询