我的课程中有课程
class QueryUtil1{
getByID(int id){
//open connection
//create query
// map to dataset and return
}
}
class QueryUtil2{
getByID(int id){
//open connection
//create query
// map to dataset and return
}
}
所以这些方法从多个类调用创建多次往返数据库,在某些情况下,我试图做的是将所有这些查询合并并将其返回到单个数据集中。
QueryUtil utill = new QueryUtil()l
Dataset ds = utill
._queryUtil1.getByID(id)
._queryUtil2.getByID(id)
.execute();
其实施是
class QueryUtil {
StringBuilder query = new StringBuilder();
QueryUtil1 _queryUtil1 = new QueryUtil1();
QueryUtil2 _queryUtil2 = new QueryUtil2();
execute(){
string sql = query.ToString();
//execute command and return dataset
}
class QueryUtil1 : QueryUtil{
QueryUtil getByID(int id){
query.append("select * from table where id = " + id);
return this;
}
}
}
但问题是它抛出stackoverflowexeption因为子类启动父类和父类启动子类等等...我想实现链接任何想法如何?
也许composite pattern是你的解决方案。
在任何情况下,您都需要一个“容器”来存储所有QueryUtil对象并对其进行管理