有个疑问困扰了很多年了~
我们知道,在各类业务系统,都会存在查询的情况。我们设计一个实体或者叫模型,这个实体肯定有很多字段,一开始的时候系统支持一个或两个字段的查询,比方说客户实体,有name、alias、createTime等多种属性,一开始的需求可能只需要根据name进行查询,后来客户发现这样的查询不充分,也需要查询alias字段。我不知道其他人是什么情况,不过我碰到的大多数的做法是,一开始查询name,那么就支持name查询,等客户发现需要查询alias字段的时候,再改代码,再升级。这有个问题,需要至少动两方面的代码:1、视图层;2、模型层。由于多数人使用的框架以SSH居多,且多数是action->service->dao,那么就会存在一个问题,action要改、service要改,甚至dao也要改。那么这样一个小小的功能,需要修改多处的地方。我认为这样对代码的维护不是个很好的事情。
我曾经参考ibatis的生成工具搞了一个叫example的东东,针对每个实体去设计可扩展的查询。可是我发现这种完全是针对数据库的方式来做的,查单表的时候不错,但我不认为是个好主意。我希望这个设计能脱胎于数据库去实现。
不知道各位有没有好的方式?