我创建了一个java方法,该方法返回如下结果集:
String query = "SELECT * FROM "+table_name+" WHERE "+parameter+ " = " +condition;
ResultSet rs = stmt.excecuteQuery(query);
return rs;
我的理解是ResultSet可以像SQL表一样,我正在寻找一种进一步从该结果集中选择特定行的方法。
类似另一种方法:
public ResultSet filterRS (ResultSet rs){
String query = "SELECT * FROM "+rs+" WHERE "+new_parameter+ " = " +new_condition;
ResultSet rs_new = stmt.excecuteQuery(query);
return rs_new;
}
我已经阅读了文档,但没有说明如何执行此操作。有可能以简单的方式吗?
答案 0 :(得分:0)
仅需注意一点:您不应像这样那样拼凑您的查询。 您应该像这样将语句中的参数绑定:
String queryString = "SELECT * FROM FOO WHER BAR = ?1 ";
Query q = em.createNativeQuery(queryString);
q.setParameter(1, conditionGoesHere);
List <Result> result = (TCiletEpsTracking) query.getResultList();
一旦有了结果集,就有两种方法可以做到。我总是采用老式的方法,即遍历整个结果集,并在满足我的条件的情况下将其添加到列表中。
但是,如果您使用的是Java 8,那么我认为使用流对您会更好。这里是一些文献:https://beginnersbook.com/2017/10/java-8-stream-filter/
答案 1 :(得分:0)
不,你不能。
您需要在第一个查询中指定所有过滤条件,如:
select * from my_table
WHERE column1 = x
AND column2 = y
然后,运行此SQL,您将获得所需的行。您可以使用AND
和OR
的任意组合。