数据库里有表如下:
人物   时间    做事(件)
甲     上午      50
甲     下午      55
乙     上午      50
乙     下午      55
我可以很简单的逐条读取,现在我要对读取的结果进行整合,就是整合它一天的工作量,显示在页面如下表所示:
人物    时间    做事(件)
甲      全天      105
乙      全天      105我struts1里边的listAction是这样写的@Controller("/control/performance/list")
public class PerformanceListAction extends Action{
@Resource PerformanceService performanceService;
@Resource PlanService planService;

@Override 
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
PerformanceForm formbean = (PerformanceForm) form;
PageView<Performance> pageView = new PageView<Performance>(12, formbean.getPage());
LinkedHashMap<String, String> orderby = new LinkedHashMap<String, String>();
orderby.put("proDate", "asc");
if("true".equals(formbean.getQuery())){
StringBuilder sb = new StringBuilder(); 
List<Object> params = new ArrayList<Object>();
if(formbean.getPlanId()!=null && formbean.getPlanId()>0){ 
sb.append(" o.plan.id=?").append(params.size()+1);
params.add(formbean.getPlanId());
Plan plan=planService.find(formbean.getPlanId());
request.setAttribute("plan", plan);
}
if(formbean.getUsername()!=null && !"".equals(formbean.getUsername().trim())){
if(params.size()>0)  sb.append(" and ");
sb.append(" o.employee.id = ?").append(params.size()+1);
params.add(formbean.getUsername());
}
pageView.setQueryResult(
performanceService.getScrollData(pageView.getFirstResult(), pageView.getMaxresult(),
sb.toString(), params.toArray(), orderby));
}else{
pageView.setQueryResult(performanceService.getScrollData(pageView.getFirstResult(), pageView.getMaxresult(), orderby));
}
request.setAttribute("pageView", pageView);
return mapping.findForward("list");
}}
PageView:public class PageView<T> {
/** 分页数据 **/
private List<T> records;
/** 页码开始索引和结束索引 **/
private PageIndex pageindex;
/** 总页数 **/
private long totalpage = 1;
/** 每页显示记录数 **/
private int maxresult = 12;
/** 当前页 **/
private int currentpage = 1;
/** 总记录数 **/
private long totalrecord;
/** 页码数量 **/
private int pagecode = 10;
/** 要获取记录的开始索引 **/
public int getFirstResult() {
return (this.currentpage-1)*this.maxresult;
}
public int getPagecode() {
return pagecode;
} public void setPagecode(int pagecode) {
this.pagecode = pagecode;
} public PageView(int maxresult, int currentpage) {
this.maxresult = maxresult;
this.currentpage = currentpage;
}

public void setQueryResult(QueryResult<T> qr){
setTotalrecord(qr.getTotalrecord());
setRecords(qr.getResultlist());
}

public long getTotalrecord() {
return totalrecord;
}
public void setTotalrecord(long totalrecord) {
this.totalrecord = totalrecord;
setTotalpage(this.totalrecord%this.maxresult==0? this.totalrecord/this.maxresult : this.totalrecord/this.maxresult+1);
}
public List<T> getRecords() {
return records;
}
public void setRecords(List<T> records) {
this.records = records;
}
public PageIndex getPageindex() {
return pageindex;
}
public long getTotalpage() {
return totalpage;
}
public void setTotalpage(long totalpage) {
this.totalpage = totalpage;
this.pageindex = PageIndex.getPageIndex(pagecode, currentpage, totalpage);
}
public int getMaxresult() {
return maxresult;
}
public int getCurrentpage() {
return currentpage;
}
}
PageIndex:public class PageIndex {
private long startindex;
private long endindex;

public PageIndex(long startindex, long endindex) {
this.startindex = startindex;
this.endindex = endindex;
}
public long getStartindex() {
return startindex;
}
public void setStartindex(long startindex) {
this.startindex = startindex;
}
public long getEndindex() {
return endindex;
}
public void setEndindex(long endindex) {
this.endindex = endindex;
}
 
public static PageIndex getPageIndex(long viewpagecount, int currentPage, long totalpage){
long startpage = currentPage-(viewpagecount%2==0? viewpagecount/2-1 : viewpagecount/2);
long endpage = currentPage+viewpagecount/2;
if(startpage<1){
startpage = 1;
if(totalpage>=viewpagecount) endpage = viewpagecount;
else endpage = totalpage;
}
if(endpage>totalpage){
endpage = totalpage;
if((endpage-viewpagecount)>0) startpage = endpage-viewpagecount+1;
else startpage = 1;
}
return new PageIndex(startpage, endpage);
}
}