gpt4 book ai didi

mysql - 个别参数或构建 Where 子句

转载 作者:可可西里 更新时间:2023-11-01 07:46:09 27 4
gpt4 key购买 nike

我正在构建一个对象来在我的数据库中搜索订单。用户可以设置许多可能的参数,并且他们可以为每次搜索设置任意数量的参数。我已经创建了 setter 方法来收集搜索所需的所有参数。

我的问题是这样的。什么是“最佳实践”

  1. 存储参数,并在调用doSearch方法时构建WHERE子句
  2. 在设置参数时构建WHERE子句

我想了解任何建议背后的原因。

请注意,每次搜索都会实例化该对象,因此我不必担心使用不同参数进行第二次搜索。

最佳答案

您应该将订单搜索代码与构建 SQL 的代码分开。 SQL 应该构建在 OrderSearch 类的派生(或 Strategy 派生)中。一旦进行了这种分离,何时构建 SQL 就不再重要了。

让这更简单一点。给定一个名为 OrderSearch 的类,它具有一组用于搜索条件的设置方法,您希望有一个名为 OrderSearchSQLBuilder 的子类。请注意,子类依赖于基类,而基类又独立于子类。这个非常重要。这种独立性允许您忽略 SQL 是在 setter 方法中构建的,还是在搜索方法中构建的。参见 The Dependency Inversion Principle (DIP) .

一旦有了这种分离,就可以用其他策略代替导数。例如,如果您想在不将应用程序连接到 SQL 数据库的情况下测试您的应用程序,您可以创建一个虚拟的 in-ram 数据库并创建处理该虚拟数据库的 OrderSearch 的派生版本。应用程序的其余部分将是幸福的,并且您的测试将独立于数据库连接、预先存在的数据等的恐怖。

关于mysql - 个别参数或构建 Where 子句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/617759/

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