查了网上很多资料,有的用一些ORM,简化了Dao的设计,但这个是不用ORM的,只能自己JDBC写Dao,看到了一些设计:
比如NewsDao接口中的一个查询方法,带分页,带一些参数,使用一个List装填结果,返回个数:
第一种:
...
//参数一堆
public abstract int getNews( List newsList , int pageNo , int pageSize , String where );
...
第二种:
...
//使用一个实现了Parameter接口的对象封装查询
public abstract int getNews( Parameter pBean );
...
//Parameter实现类如下
public class ParamBean implements Parameter {
int pageNo;
int pageSize;
List pageList;//List内容填入这里,业务逻辑可以从这里面取,或者直接返回给jsp
String where;
//getter/setter略去
}
第三种:
...
//使用一个Map封装查询参数,再将Map中k/v对一一转成实际类型使用
// 比如第一页,总数10条,条件是时间大于192323200的记录
// Map: "pageNo":"1","pageSize":"10","where":"created > 192323200"
public abstract int getNews( List newsList , Map mParam );
...
我想,用第一种可能万一修改起这个接口实现每个都要动了,除非只增加。
第二种对象封装,service又要new一个Parameter对象出来了,而且用这种似乎没必要每个模块都写Dao,您想参数都恒定了。
第三种Map,需要转来转去,不知用哪一种好点,本人新手,请各位前辈指点迷津。
[该贴被fnet于2008-01-13 00:19修改过]