【发布时间】:2013-07-30 23:54:27
【问题描述】:
如果我有一个可以接受大量参数的 url,然后我想动态混合和匹配以创建 sql 查询以返回结果...
我可以考虑使用哪些设计模式从参数创建过滤器?
示例:
mySite.com?name=tom&color=red&size=large&etc
所需的 sql 输出 select * from mytable where name = tom and color = red and size = large;
这在小范围内是微不足道的,但是当您有大量来自过滤器面板的变量参数时,其中包括日期和匹配查询字符串等,并且您希望将它们整齐且可维护地组装到 sql 查询中,同时检查和清理数据,事情可能会出错..冗长。我最终编写了大量 if/else 样式的过滤器方法,这有点像维护噩梦。
【问题讨论】:
-
你能澄清一下你的场景吗?特别是,您能否更具体地了解从参数部分创建过滤器。至于构建查询,您可以使用Query Object。
-
你不能只用参数的名称和值填充地图吗?
-
澄清......一个由许多通过外键关联的表组成的sql数据库。通过url传入的大量参数,其中大部分是可选的。我需要将这些参数混合并匹配到 sql(包括连接等)中,然后最终将生成的 sql 传递出去以执行并返回结果。 @Rex 在他的回答中建议了装饰器模式,我必须说这看起来很有希望。我可以从一个基本查询开始,并将从 url 中提取的各种条件“装饰”到基本查询上……
-
@stan0 对于键值映射来说太复杂了,因为在某些情况下需要连接,在某些情况下不需要。此外,我希望能够在几乎所有情况下检查输入并进行各种翻译,例如。 url 参数可能是 &timeofday=afternoon 但查询需要是 time_of_day_id = 3 或类似的。
标签: sql url design-patterns filter