首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用Search Bean表达查询的优雅方式是什么?

用Search Bean表达查询的优雅方式是什么?
EN

Stack Overflow用户
提问于 2011-02-23 09:07:42
回答 2查看 181关注 0票数 1

在我们的项目中,我们有一个bean,但我们也想在该bean上表达标准的CRUD查询。我们希望能够过滤某些字段(范围、等式、排除等)。现在,我们正在考虑使用一个SearchBean来表示这样一组过滤器。然而,我们意识到这个搜索bean与我们实际的bean几乎完全相同,我们很难找到一个更优雅的解决方案。

解决这个问题的好方法是什么?我们不寻找任何特定于框架的解决方案。

EN

回答 2

Stack Overflow用户

发布于 2011-02-23 12:38:58

假设您想在应用程序服务器中处理它。您可以考虑使用任一芭乐集合

http://scaramoche.blogspot.com/2010/08/googles-guava-library-tutorial-part-4.html

或CollectionUtils

http://commons.apache.org/collections/apidocs/org/apache/commons/collections/CollectionUtils.html#filter%28java.util.Collection,%20org.apache.commons.collections.Predicate%29

和来自BeanUtils的BeanPredicate

http://commons.apache.org/beanutils/v1.8.2/apidocs/org/apache/commons/beanutils/BeanPredicate.html

您必须为您想要支持的过滤器类型实现谓词类。

票数 1
EN

Stack Overflow用户

发布于 2011-02-23 11:56:06

恐怕这个问题太开放了,不能给出一个好的答案。这真的取决于你的目标是什么。此外,您还没有明确提到您正在使用数据库(而不是搜索内存),但我假设您正在使用数据库。

您的方法(findEntitiesLikeMe)听起来像是一种很好的简单方法。

有很多查询语言(JPQL/SQL/等)。您可以(通过清理查询并将其传递到较低层,或者通过直接解析查询)来实现。

如果您的服务器结构足够像树一样,那么您可以接受XPath并返回与XPath匹配的对象空间。

这三种方法都为您提供了范围、等式和排除。

归根结底,成熟的查询语言可能会为您提供最大的灵活性,但实现起来可能是最困难的,尤其是在解析查询而不将其传递到较低层的情况下。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5085962

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档