条件查询,分页显示

云晴 2016-12-28 05:23:49
我按照条件查询出的数据正常分页显示在列表中,但是只要点击上一页或者下一页,就变成全查询的数据了,这是怎么回事?
...全文
774 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
码农_万先森 2017-02-09
  • 打赏
  • 举报
回复
条件参数 没有带上
那年花 2017-01-10
  • 打赏
  • 举报
回复
一般来说 分页查询我们是传几个参数的 页数 数据数 查询条件 后台得到这个数据list再到前台遍历出来
  • 打赏
  • 举报
回复
我的个妈,分个页,这么多代码
kahnyy5202015 2016-12-30
  • 打赏
  • 举报
回复
touda..........
escapeftc 2016-12-30
  • 打赏
  • 举报
回复
点击上一页/下一页向服务端发送请求时需要传参数pageNum(页码)和pageSize(单页条数),有搜索条件的再带上搜索相关的参数
奋斗ing的小白 2016-12-30
  • 打赏
  • 举报
回复
是不是传参数有问题,或者后台处理逻辑有问题
聪头 2016-12-30
  • 打赏
  • 举报
回复
翻页链接(按钮)要带很多参数,如总页数、当前页码或当前列表起始位置、检索条件等
云晴 2016-12-29
  • 打赏
  • 举报
回复
引用 7 楼 qq_17280849 的回复:
推荐使用pagehelper插件,一段配置,两行代码搞定分页
不推荐,全用插件了,自己什么都不会了。
雨上小公举 2016-12-29
  • 打赏
  • 举报
回复
推荐使用pagehelper插件,一段配置,两行代码搞定分页
云晴 2016-12-29
  • 打赏
  • 举报
回复

//dao
public List<User> getUser(String EnID, String dateafter, String datebefore,int offset, int length) {
String hql = "from User where 1=1";
if(EnID!=null&&EnID!=""){
hql+=" and EnID='"+EnID+"'";
}
if(dateafter!=null&&dateafter!=""){
hql+=" and datetime>='"+dateafter+"'";
}
if(datebefore!=null&&datebefore!=""){
hql+=" and datetime<='"+datebefore+"'";
}
if(EnID!=null&&EnID!=""&&dateafter!=null&&dateafter!=""){
hql+=" and EnID='"+EnID+"'"+" and datetime>='"+dateafter+"'";
}
if(EnID!=null&&EnID!=""&&datebefore!=null&&datebefore!=""){
hql+=" and EnID='"+EnID+"'"+" and datetime<='"+datebefore+"'";
}
if(dateafter!=null&&dateafter!=""&&datebefore!=null&&datebefore!=""){
hql+=" and datetime between '"+dateafter+"'"+" and '"+datebefore+"'";
}
if(EnID!=null&&EnID!=""&&dateafter!=null&&dateafter!=""&&datebefore!=null&&datebefore!=""){
hql+=" and EnID='"+EnID+"'"+" and datetime between '"+dateafter+"'"+" and '"+datebefore+"'";
}
if((EnID==null||EnID=="")&&(dateafter==null||dateafter=="")&&(datebefore==null||datebefore=="")){
hql=hql;
}
Query query = sessionFactory.getCurrentSession().createQuery(hql);
query.setFirstResult(offset);
        query.setMaxResults(length);
List<User> list=query.list();
return list;
}
public Long getAllRowCount(String EnID, String dateafter, String datebefore) {
        String hql = "SELECT COUNT(*) from User";
        Query query = sessionFactory.getCurrentSession().createQuery(hql);
        return Long.parseLong(query.uniqueResult().toString());
    }
//service
public Page getForPage(String EnID,String dateafter, String datebefore,int currentPage, int pageSize){
Page page=new Page<User>();
int allRow = userDao.getAllRowCount(EnID, dateafter, datebefore).intValue();
        int offset = page.countOffset(currentPage, pageSize);
        List<User> list= userDao.getUser(EnID, dateafter, datebefore, offset, pageSize);
        page.setPageNo(currentPage);
        page.setPageSize(pageSize);
        page.setTotalRecords(allRow);
        page.setList(list);
        return page;
}
public Long getAllRowCount(String EnID, String dateafter, String datebefore) {
        return userDao.getAllRowCount(EnID, dateafter, datebefore);
    }
//controller
@RequestMapping(value="/user/getuser.do",method=RequestMethod.GET)
public String getAllUsers(HttpServletRequest request,String EnID,String dateafter, String datebefore){
        try {
               String pageNo = request.getParameter("pageNo");
               if (pageNo == null) {
                   pageNo = "1";
               }
               Page page = userService.getForPage(EnID, dateafter, datebefore, Integer.valueOf(pageNo), 10);
               request.setAttribute("page", page);
               List<User> pageusers = page.getList();
               request.setAttribute("pageusers", pageusers);
           } catch (Exception e) {
               e.printStackTrace();
           }
       return "list";
   }
//Page.java
public class Page<User> {

 // 结果集
    private List<User> list;
 
    // 查询记录总数
    private int totalRecords;
 
    // 每页多少条记录
    private int pageSize;
 
    // 第几页
    private int pageNo;
     
    /**
     * @return 总页数
     * */
    public int getTotalPages(){
        return (totalRecords+pageSize-1)/pageSize;

//    	return totalRecords % pageSize==0 ? totalRecords/pageSize:totalRecords/pageSize+1;
    }


/**
     * 计算当前页开始记录
     * @param pageSize 每页记录数
     * @param currentPage 当前第几页
     * @return 当前页开始记录号
     */
    public int countOffset(int currentPage,int pageSize){
        int offset = pageSize*(currentPage-1);
        return offset;
    }
     
    /**
     * @return 首页
     * */
    public int getTopPageNo(){
        return 1;
    }
     
    /**
     * @return 上一页
     * */
    public int getPreviousPageNo(){
        if(pageNo<=1){
            return 1;
        }
        return pageNo-1;
    }
     
    /**
     * @return 下一页
     * */
    public int getNextPageNo(){
        if(pageNo>=getBottomPageNo()){
            return getBottomPageNo();
        }
        return pageNo+1;
    }
     
    /**
     * @return 尾页
     * */
    public int getBottomPageNo(){
        return getTotalPages();
    }

    
   public List<User> getList() {
return list;
}

public void setList(List<User> list) {
this.list = list;
}

public int getTotalRecords() {
return totalRecords;
}

public void setTotalRecords(int totalRecords) {
this.totalRecords = totalRecords;
}

public int getPageSize() {
return pageSize;
}

public void setPageSize(int pageSize) {
this.pageSize = pageSize;
}

public int getPageNo() {
return pageNo;
}

public void setPageNo(int pageNo) {
this.pageNo = pageNo;
}
 //list.jsp
<tr>
            <td colspan="6" align="center">共${page.totalRecords}条记录 共${page.totalPages}页 当前第${page.pageNo}页<br>
                 
                <a href="/SpringMVC04/user/getuser.do?pageNo=${page.topPageNo }"><input type="button" name="fristPage" value="首页" /></a>
                <c:choose>
                  <c:when test="${page.pageNo!=1}">
                     
                      <a href="/SpringMVC04/user/getuser.do?pageNo=${page.previousPageNo }"><input type="button" name="previousPage" value="上一页" /></a>
                     
                  </c:when>
                  <c:otherwise>
                     
                      <input type="button" disabled="disabled" name="previousPage" value="上一页" />
                     
                  </c:otherwise>
                </c:choose>
                <c:choose>
                  <c:when test="${page.pageNo != page.totalPages}">
                    <a href="/SpringMVC04/user/getuser.do?pageNo=${page.nextPageNo }"><input type="button" name="nextPage" value="下一页" /></a>
                  </c:when>
                  <c:otherwise>
                     
                      <input type="button" disabled="disabled" name="nextPage" value="下一页" />
                     
                  </c:otherwise>
                </c:choose>
                <a href="/springMVCSSH2/user/getuser.do?pageNo=${page.bottomPageNo }"><input type="button" name="lastPage" value="尾页" /></a>
            </td>
        </tr>

云晴 2016-12-29
  • 打赏
  • 举报
回复
//dao public List<User> getUser(String EnID, String dateafter, String datebefore,int offset, int length) { String hql = "from User where 1=1"; if(EnID!=null&&EnID!=""){ hql+=" and EnID='"+EnID+"'"; } if(dateafter!=null&&dateafter!=""){ hql+=" and datetime>='"+dateafter+"'"; } if(datebefore!=null&&datebefore!=""){ hql+=" and datetime<='"+datebefore+"'"; } if(EnID!=null&&EnID!=""&&dateafter!=null&&dateafter!=""){ hql+=" and EnID='"+EnID+"'"+" and datetime>='"+dateafter+"'"; } if(EnID!=null&&EnID!=""&&datebefore!=null&&datebefore!=""){ hql+=" and EnID='"+EnID+"'"+" and datetime<='"+datebefore+"'"; } if(dateafter!=null&&dateafter!=""&&datebefore!=null&&datebefore!=""){ hql+=" and datetime between '"+dateafter+"'"+" and '"+datebefore+"'"; } if(EnID!=null&&EnID!=""&&dateafter!=null&&dateafter!=""&&datebefore!=null&&datebefore!=""){ hql+=" and EnID='"+EnID+"'"+" and datetime between '"+dateafter+"'"+" and '"+datebefore+"'"; } if((EnID==null||EnID=="")&&(dateafter==null||dateafter=="")&&(datebefore==null||datebefore=="")){ hql=hql; } Query query = sessionFactory.getCurrentSession().createQuery(hql); query.setFirstResult(offset); query.setMaxResults(length); List<User> list=query.list(); return list; } public Long getAllRowCount(String EnID, String dateafter, String datebefore) { String hql = "SELECT COUNT(*) from User"; Query query = sessionFactory.getCurrentSession().createQuery(hql); return Long.parseLong(query.uniqueResult().toString()); } //service public Page getForPage(String EnID,String dateafter, String datebefore,int currentPage, int pageSize){ Page page=new Page<User>(); int allRow = userDao.getAllRowCount(EnID, dateafter, datebefore).intValue(); int offset = page.countOffset(currentPage, pageSize); List<User> list= userDao.getUser(EnID, dateafter, datebefore, offset, pageSize); page.setPageNo(currentPage); page.setPageSize(pageSize); page.setTotalRecords(allRow); page.setList(list); return page; } public Long getAllRowCount(String EnID, String dateafter, String datebefore) { return userDao.getAllRowCount(EnID, dateafter, datebefore); } //controller @RequestMapping(value="/user/getuser.do",method=RequestMethod.GET) public String getAllUsers(HttpServletRequest request,String EnID,String dateafter, String datebefore){ try { String pageNo = request.getParameter("pageNo"); if (pageNo == null) { pageNo = "1"; } Page page = userService.getForPage(EnID, dateafter, datebefore, Integer.valueOf(pageNo), 10); request.setAttribute("page", page); List<User> pageusers = page.getList(); request.setAttribute("pageusers", pageusers); } catch (Exception e) { e.printStackTrace(); } return "list"; } //Page.java public class Page<User> { // 结果集 private List<User> list; // 查询记录总数 private int totalRecords; // 每页多少条记录 private int pageSize; // 第几页 private int pageNo; /** * @return 总页数 * */ public int getTotalPages(){ return (totalRecords+pageSize-1)/pageSize; // return totalRecords % pageSize==0 ? totalRecords/pageSize:totalRecords/pageSize+1; } /** * 计算当前页开始记录 * @param pageSize 每页记录数 * @param currentPage 当前第几页 * @return 当前页开始记录号 */ public int countOffset(int currentPage,int pageSize){ int offset = pageSize*(currentPage-1); return offset; } /** * @return 首页 * */ public int getTopPageNo(){ return 1; } /** * @return 上一页 * */ public int getPreviousPageNo(){ if(pageNo<=1){ return 1; } return pageNo-1; } /** * @return 下一页 * */ public int getNextPageNo(){ if(pageNo>=getBottomPageNo()){ return getBottomPageNo(); } return pageNo+1; } /** * @return 尾页 * */ public int getBottomPageNo(){ return getTotalPages(); } public List<User> getList() { return list; } public void setList(List<User> list) { this.list = list; } public int getTotalRecords() { return totalRecords; } public void setTotalRecords(int totalRecords) { this.totalRecords = totalRecords; } public int getPageSize() { return pageSize; } public void setPageSize(int pageSize) { this.pageSize = pageSize; } public int getPageNo() { return pageNo; } public void setPageNo(int pageNo) { this.pageNo = pageNo; } //list.jsp <tr> <td colspan="6" align="center">共${page.totalRecords}条记录 共${page.totalPages}页 当前第${page.pageNo}页<br> <a href="/SpringMVC04/user/getuser.do?pageNo=${page.topPageNo }"><input type="button" name="fristPage" value="首页" /></a> <c:choose> <c:when test="${page.pageNo!=1}"> <a href="/SpringMVC04/user/getuser.do?pageNo=${page.previousPageNo }"><input type="button" name="previousPage" value="上一页" /></a> </c:when> <c:otherwise> <input type="button" disabled="disabled" name="previousPage" value="上一页" /> </c:otherwise> </c:choose> <c:choose> <c:when test="${page.pageNo != page.totalPages}"> <a href="/SpringMVC04/user/getuser.do?pageNo=${page.nextPageNo }"><input type="button" name="nextPage" value="下一页" /></a> </c:when> <c:otherwise> <input type="button" disabled="disabled" name="nextPage" value="下一页" /> </c:otherwise> </c:choose> <a href="/springMVCSSH2/user/getuser.do?pageNo=${page.bottomPageNo }"><input type="button" name="lastPage" value="尾页" /></a> </td> </tr>
我爱娃哈哈 2016-12-29
  • 打赏
  • 举报
回复
我们一般是前端传过来第几页,要查几条,然后后台计算分页数据然后给出数据
Scaarf 2016-12-29
  • 打赏
  • 举报
回复
我告诉你吧,之前我也是这样,原因是你上一页,下一页操作并没有把查询条件提交给后台。后台先把查询条件给jsp页面,jsp页面你可以弄一个隐藏域来接收查询条件,然后下一页,上一页操作提交时,获取隐藏域的查询条件值,然后把它提交给后台。
Finley-Ning 2016-12-29
  • 打赏
  • 举报
回复
那只能说明你下面的链接没有传条件参数
qq_26078653 2016-12-28
  • 打赏
  • 举报
回复
代码贴出来看一下
青元子 2016-12-28
  • 打赏
  • 举报
回复
参数没有设计好。如果不是必须可以考虑我的博客直接用分页框架
魔都 2016-12-28
  • 打赏
  • 举报
回复
pageNo pageSize 一定没传好
双子叶 2016-12-28
  • 打赏
  • 举报
回复
那就说明你的上一次和下一页的页码参数没有传到后台,或者你的后台分页逻辑代码有问题了。检查一下吧

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧