gpt4 book ai didi

java - 是否有用于在 Java 中使用 SQL 实现参数搜索功能的设计模式?

转载 作者:行者123 更新时间:2023-11-30 09:57:52 25 4
gpt4 key购买 nike

我不太确定设计我称之为“参数”搜索或规则引擎的最佳方法是什么。我有一个 Java 对象,它有几个字段。我将针对多个查询运行 java 对象,以查看它是否满足特定条件。

我能想到的一个例子是 bugzilla 中的错误搜索功能。在 UI 中,您可以选择状态、解决方案、严重性等内容。然后点击 go,它会返回符合该条件的错误。我想这是通过从 UI 中选择的字段生成 SQL 查询来实现的。

在我的例子中,包含值的对象不在数据库中 所以这不是显而易见的答案。我的对象也相当复杂,需要添加多个表......创建数据库表只是为了使用数据库中的查询引擎似乎有点老套。此外,在我的应用程序中,用户基本上创建了这些映射,并且需要将它们保存到数据库中。所以,在那种情况下,你最终会把一个原始的 sql 查询字符串保存到数据库中,这对我来说听起来像是一个严重的安全问题。 (但是,我不是数据库专家,所以也许事情就是这样完成的)。

在这一点上,我真的在寻找一些指导。我希望有某种类型的设计模式可以满足我要实现的目标。我试着用谷歌搜索各种东西,比如“参数搜索设计模式”和“规则引擎”,但没有找到任何相关的东西。这是 LINQ 会解决的问题吗?我简单地看了看,似乎这也太过分了。

提前致谢。

编辑 1:
这里有一些额外的细节,我希望这些细节能澄清到目前为止的评论。我想让用户创建一些规则,就像对象 foo.getTemperature() >= 30 和 foo.getTypeOfMsg() == Alert 一样。然后,检索一个“Alert”设置对象。如果 foo.getTypeOfMsg() == "Test"然后获取 "Test"对象。规则是用户驱动的,因此有无限的可能性。对象 foo 由网络服务检索,我不需要将它存储在数据库中。

最佳答案

如果您不使用数据库来存储您的对象,除了“生成 SQL 查询”部分之外,其他一切都是一样的。你应该看的是 Specification Pattern .您的规范对象基本上有一个名为 IsSatisfiedBy 的方法,该方法接受对象以查看它是否符合规范。根据用户输入向规范添加某种参数似乎是一项非常微不足道的练习,听起来它对您的情况很有效。

不确定我是否理解有关“映射”的部分,但由于您没有生成原始 SQL 查询,只需确保您的规范对象是可序列化的并根据需要持久化即可。

LINQ 可以像普通的 C# 或 Java 一样做到这一点。

关于java - 是否有用于在 Java 中使用 SQL 实现参数搜索功能的设计模式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1413686/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com