hibernate 查询两个时间段的数据和分页实现

 

在项目中要用到查询两个时间段的数据

1.在页面里

<table>
                  <tr>
                    <td class="STYLE1"><div align="center">
                     
                出行开始日期<input type="text" id="start"  value="${start}"/>---
         出行结束日期<input type="text" id="end" value="${end}" />
                 </div></td>
                    <td class="STYLE1"><div align="center" id="search">
                   <img src="tab/images/113.png" width="14" height="14" />
                  <a href="" style="text-decoration: none;" onclick="a(this)" >搜索</a>
 
                    </div>
                  
                    </td>
                    </tr>
           </table>

2.用js获取两个文本框中的值并传给action

<SCRIPT type="text/javascript">
function a(o){
 var start = document.getElementById("start").value;
 var end = document.getElementById("end").value;
 o.href = "showUserMade?start="+start+"&&end="+end+""; 
}
</SCRIPT>

 3.在action中接收页面传过来的start和end的值,get和set一下

public class ShowUserMadeAction extends ActionSupport {
  private int page;  //接受传递的页码参数
  private String start;
  private String end;
 
  public String getStart() {
  return start;
 }

 public void setStart(String start) {
  this.start = start;
 }

 public String getEnd() {
  return end;
 }

 public void setEnd(String end) {
  this.end = end;
 }

 private PageResultSet<Usermade> pageResultSet;
 private IShowUserMadeService showUserMadeService;

 public IShowUserMadeService getShowUserMadeService() {
  return showUserMadeService;
 }

 public void setShowUserMadeService(IShowUserMadeService showUserMadeService) {
  this.showUserMadeService = showUserMadeService;
 }
 

 public int getPage() {
  return page;
 }

 public void setPage(int page) {
  this.page = page;
 }

 

 public PageResultSet<Usermade> getPageResultSet() {
  return pageResultSet;
 }

 public void setPageResultSet(PageResultSet<Usermade> pageResultSet) {
  this.pageResultSet = pageResultSet;
 }

 public String showUserMade() {
  HttpServletRequest request = ServletActionContext.getRequest();
  request.setAttribute("start", start);//放在request作用域里,这样就可在jsp页面通过${"start"}取到值

  request.setAttribute("end", end);
  this.pageResultSet =showUserMadeService.queryByPage(25, page,start,end);//设置分页个数,并传值给service
  return SUCCESS;
 }
}

 

 4.在service层里根据取到的开始和结束的值进行数据库查询

public class ShowUserMadeServiceImpl implements IShowUserMadeService {
 private IShowUserMadeDao showUserMadeDao;
 
 public IShowUserMadeDao getShowUserMadeDao() {
  return showUserMadeDao;
 }

 public void setShowUserMadeDao(IShowUserMadeDao showUserMadeDao) {
  this.showUserMadeDao = showUserMadeDao;
 }
@Override
public PageResultSet<Usermade> queryByPage(int pageSize, int page,String start,String end) {
 
 
 String hql="from Usermade u where 1=1";
 if(null!=start && !"".equals(start.trim())){
  hql=hql+" and u.beginDate>='"+start+"'";
 }
 if(null!=end && !"".equals(end.trim())){
  hql=hql+" and u.endDate<='"+end+"'";
 }
 
  int totalRow =showUserMadeDao.queryRowCount(hql);
   PageInfo pageinfo = new PageInfo(totalRow, pageSize, page);
   List<Usermade> list =showUserMadeDao.queryByPage(hql, pageinfo.getBeginIndex(), pageinfo.getPageSize());
 
   PageResultSet<Usermade> pageResultSet = new PageResultSet<Usermade>();
   pageResultSet.setList(list);
   pageResultSet.setPageInfo(pageinfo);
   return pageResultSet;
}
}

5.在页面传递页码的地方加上start 和end的参数,这样可以支持分页,并且输入框中的值保持原来输入的值

 <table width="100%" border="0" cellpadding="0" cellspacing="0" class="line_table">
                <tr>
                   <td align="right" class="STYLE4">
                   一共&nbsp;&nbsp;<s:property value="pageResultSet.pageInfo.totalRow"/>&nbsp;&nbsp;记录
                                                     页码:&nbsp;&nbsp;<s:property value="pageResultSet.pageInfo.currentPage" />&nbsp;/&nbsp;<s:property value="pageResultSet.pageInfo.totalPage"/> &nbsp;&nbsp;&nbsp;                                      
                   <s:if test="pageResultSet.pageInfo.bof">
                                                             首页    第一页
                   </s:if>
                   <s:else>
                     <a href="showUserMade?page=1&&start=${start}&&end=${end}">首页</a> <a href="showUserMade?page=<s:property value="pageResultSet.pageInfo.currentPage-1"/>&&start=${start}&&end=${end}">上一页</a>
                   </s:else>
                  
                   <s:if test="pageResultSet.pageInfo.eof">
                                                         下一页   末页
                   </s:if>
                   <s:else>                                                             
                      <a href="showUserMade?page=<s:property value="pageResultSet.pageInfo.currentPage+1"/>&&start=${start}&&end=${end}">下一页</a> <a href="showUserMade?page=<s:property value="pageResultSet.pageInfo.totalPage"/>&&start=${start}&&end=${end}">末页</a>
                   </s:else>
                   </td>
                </tr>
               </table>
      </td>
              </tr>

     
    </table>

ok了

 

posted @ 2012-10-26 15:35  小木v587  阅读(991)  评论(0)    收藏  举报