组合查询之所以很让人觉得困难就是因为组合的情况特别的多,组合情况特别的多之后就很可能会让我们在分析的时候漏掉某种情况;除此之外,我们的代码量和工作量也会因此变的特别的大。那么我们不妨转换一种思路,组合最让人望而却步的地方是组合情况特别的多,但是如果只有一种情况,那么它的实现其实是很简单的。从这个角度来想,我如果将所有的查询都看做一种情况来处理,而所谓的不同组合就是这一种情况几个特定的几个地方的不同选择而已那么我们处理起来是不是会变的很简单
单纯的说可能觉得还是不理解,下面就用代码来实现一下我所说的“所有的查询都看做一种情况来处理”。
下面是机房收费系统中查询窗体
实现的功能是用户通过选择字段名和字段满足的条件来查询想要查询到的内容,其中字段最多可以由三条组合起来
字段名:用户ID 用户级别 机房号 登录时间 登录日期
符号: = > < <>
组合关系:与 或
从上面的介绍中可以看出用户可以进行的选择是很多的,我所谓的所有的查询看做一种情况来处理就是将选择全部写在一句话中,这样子用户能够做的选择就成为了这一句话中的改变点。也就是说我将能够改变的点全部封装在了一句话中,这样子我们所做的就是传递每次的改变点的内容,而不用想那么多的组合了
具体的实现: