1. 每个条件项对应一个入参
List find(String hql,Date startTime,int personId);
优点:方法签名可读性强;
扩展:要么改接口签名,要么增加参数构造重载方法,扩展性差;
基本背离了面向接口编程的初衷,除非你很确定参数不被改变,否则少用为佳。
2.使用数组传递条件项参数
List find(String hql, Object[] params);
优点:能保持接口稳定性
缺点:方法可读性不强,JavaDoc要写清楚啊。
用的最多的方法签名方式,Spring的HibernateTemplate就提供这样的方法。
3.使用不定参数
List find(String hql,Object ...params);
用起来和2没区别。
4.将查询条件封装成对象
List find(String hql , QueryParamObjec param);
没事干还要去维护这么一个DTO,而且变更时还是要去维护那个DTO的,除非追求类数目,否则不要这么...
5.使用Map传递条件参数
List find(String hql , Map params);
优点:参数变化时保持签名的稳定;
缺点:方法可读性不强,依旧要写好注释;
这个签名在条件查询时用得很多,直接request.getParameterMap()得到Map,然后往下层丢就好了。
感觉2和5用的很广泛,看来面向接口的原则很重要滴呀。