我不太确定设计我称之为“参数”搜索或规则引擎的最佳方法是什么。我有一个包含多个字段的 Java 对象。我将针对几个查询运行 java 对象,以查看它是否符合某些条件。
我能想到的一个例子是 bugzilla 中的错误搜索功能。在 UI 中,您可以选择状态、分辨率、严重性等内容。然后点击 go,它会返回符合该条件的错误。我想这是通过从 UI 中选择的字段生成 SQL 查询来实现的。
就我而言,包含值的对象不在数据库中,因此这不是显而易见的答案。我的对象也相当复杂,需要添加多个表......而且创建数据库表然后使用数据库中的查询引擎似乎有点骇人听闻。此外,在我的应用程序中,用户基本上创建了这些映射,并且需要将它们保存到数据库中。因此,在这种情况下,您最终会将原始 sql 查询字符串保存到数据库中,这对我来说听起来像是一个严重的安全问题。(但是,我不是数据库专家,所以也许这就是事情的完成方式)。
在这一点上,我真的在寻找一些指导。我希望我想要完成的事情有某种类型的设计模式。我尝试在谷歌上搜索“参数搜索设计模式”和“规则引擎”等各种内容,但没有找到任何相关的内容。这是 LINQ 会解决的问题吗?我简单地看了看它,似乎这也太过分了。
提前致谢。
编辑1:
这里有一些额外的细节,我希望能澄清到目前为止的评论。我想让用户创建一些规则,例如对象 foo.getTemperature() >= 30 并且 foo.getTypeOfMsg() == Alert。然后,检索“警报”设置对象。如果 foo.getTypeOfMsg() == "Test" 则获取 "Test" 对象。规则是用户驱动的,因此有无限的可能性。对象 foo 由 Web 服务检索,我无需将其存储在数据库中。