2

这可能是一个已经存在 20 年的问题,但我还是要问。我有一个有多个搜索选项的屏幕。有的可以组合。有些是独家的。

前任:

按名字和姓氏搜索

或者

按年龄搜索

处理这个问题的最佳方法是什么?我是否在应用程序中处理这个问题,或者调用许多函数中的 1 个,或者使用一大堆 if/else 调用 1 个函数。做一系列 if/else 似乎已经过时了。没有更有效的方法吗?

4

2 回答 2

2

我建议使用构建器将各种谓词收集到一个对象中,然后将该对象传递给生成相关查询的函数/方法。

SQLORM Java 库使用这种方法以面向对象的方式构建 SQL 查询。本页很好地讨论了使用具有大量 if-else 的方法与构建器方法构建查询字符串的优缺点。

于 2009-08-10T13:52:37.940 回答
0

我会验证哪些字段可以在前端一起完成。

对于存储过程,主要目标是没有带有连接的 sql。

在存储过程中,如果参数为空,我倾向于使用一串 isnull 语句来使用参数或字段值。

正如您所说,这不是一个新技巧,但它可以工作并且比每次执行生成新的 sql 快得多。它还具有易于预测的执行计划。

于 2009-08-10T14:00:01.833 回答