java 对象查询(在 java 对象列表上应用 SQL 逻辑)

java object querying ( applying SQL logic on List of java objects)

例如,我有一个 Employee 对象,Employee 包含几个字段(300+),如姓名、部门、​​薪水、年龄、帐户等。 整个员工 table 数据缓存到 java 列表对象中,其中包含 2+ 百万条记录。

要求 用户可以在员工对象中搜索任何已提交的礼物,例如员工姓名,如 Sehwag 和年龄 > 30 或薪水 > 100000,根据用户搜索,我们必须显示员工列表的过滤列表。

由于性能问题,我们不查询数据库,我们希望更早地在缓存的 java 列表对象上应用用户搜索条件

有没有办法 api/框架/我们可以查询 java 对象的任何其他解决方案?

我正在尝试以下方法,但我觉得这不是一个好方法

迭代员工列表并在员工对象上应用条件用户搜索条件,了解用户在 300 个字段中选择的搜索条件具有挑战性,为每个字段编写大量枚举映射逻辑和一些附加逻辑以使其工作。 根据当前要求,它可能有效,但考虑使用 api 或框架或更好的方法来解决要求!

在此先感谢您的帮助。

首先。如果您不想或没有机会更改现有解决方案,请查看 querydsl。 有一个 querydsl-collection 模块完全符合您的需要。在 http://www.querydsl.com/ and http://www.querydsl.com/static/querydsl/latest/reference/html/ch02s08.html

查看更多

但是,如果您有机会 review/rebuild 解决方案,您应该考虑更适合大容量查询的方法。我建议您探索更多关于非 SQL 数据库 (mongodb) 或索引工具的信息,例如 lucene 或 elasticsearch,它在 lucene 之上添加了一个 RESTFul 层。

希望对您有所帮助。

尝试了 CQEngine 的 SQL 基于查询 https://github.com/npgall/cqengine 适合我的要求,

下面是一些有用的链接 https://dzone.com/articles/getting-started-cqengine-linq

https://mvnrepository.com/artifact/com.googlecode.cqengine/cqengine