作者热门文章
- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我正在构建一个对象来在我的数据库中搜索订单。用户可以设置许多可能的参数,并且他们可以为每次搜索设置任意数量的参数。我已经创建了 setter 方法来收集搜索所需的所有参数。
我的问题是这样的。什么是“最佳实践”
doSearch
方法时构建WHERE
子句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/
我是一名优秀的程序员,十分优秀!