首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java Web开发 >

关于SSH中实现分页,请问一下

2012-03-11 
关于SSH中实现分页,请教一下。写了个小项目,数据不多,现在是直接在action中用service调用return hibernateT

关于SSH中实现分页,请教一下。
写了个小项目,数据不多,现在是直接在action中用service调用return hibernateTemplate.find("from SNews order by news_id") ;然后JSP显示LIST结果。

数据多了这样很不方便,想用个分页。

我的思路是:查询结果时,默认显示第一页,默认比如显示10条数据,然后点 下一页 给后台传一个参数,然后查到第二页数据。

具体代码不会写了。。可否指点一二。

[解决办法]
hibernate 的criteria和query都有setFirstResult和setFetchSize方法,很简单好用........
[解决办法]
直接用hibernate自带的分页方法
public List<T> selectByPage(final String hql, final int pageNumber,
final int pageSize) {

return getHibernateTemplate().executeFind(new HibernateCallback() {
public Object doInHibernate(Session s) throws HibernateException,
SQLException {

return (List<T>) s.createQuery(hql)
.setFirstResult((pageNumber - 1) * pageSize)
.setMaxResults(pageSize).list();
}
});
}
下一页什么的传对应的pageNumber,pageSize就可以了,如果你想很多页面要用的话,当然页面你还需要个分页标签。
[解决办法]
如果是要显示全部信息的话,最好只查一次,然后可以在Action中分页,每次点下一页的时候就直接从List中取数据,不用在查数据库,只要你会算算术就行了。

如果是找数据,不确定是在哪一页的话可以直接用Hibernate提供的分页方法,简单。
[解决办法]
挺想帮你的。刚用SSH做过分页。不过是老师给的文档。里面有具体步骤。不知道怎么跟你说哈。帮你顶个吧。
[解决办法]

Criteria ct = getSession().createCriteria(TbBook.class);
ct.addOrder(Order.asc("bookId"));
ct.setFirstResult(start);
ct.setMaxResults(end);
return ct.list();
分页的例子
[解决办法]
前几天做的分页显示,测试没问题,楼主参考下吧


Java code
public class Serch extends ActionSupport{   private  String  bid;   private  String  bname;   private  int    number;   private int k;//储存最大页面数   private int pageNow=1; //页码数,初始为1   private int pageSize = 5 ; //页面行数    private int intRowCount;//总行数   private int intPageCount;//总页数   private int lastPage;   private int p=1;.....set/get;public String execute() throws Exception {    List list=new List();    java.util.List L=new  ArrayList();    L=list.list();    intRowCount=L.size();    System.out.println("链表的长度:"+L.size());    if(L.size()%pageSize==0) //判断分多少页          this.lastPage=L.size()/pageSize;    else        this.lastPage=L.size()/pageSize+1;        this.setIntPageCount(this.lastPage);//存入总页数        if(this.pageNow<1)//如果当前页码是第一页在点第一页的时候也跳转到第一页        this.pageNow=1;    if(this.pageNow>this.lastPage)//同理只不过是最后一页        this.pageNow=this.lastPage;    /*     *      * 假设取其中20-25条     *      *      *      */  int startIndex=(this.pageNow-1)*pageSize;//截止条目开始,第20条  int endIndex=startIndex+pageSize;//截止条目结束     第25条    if(endIndex>=L.size())      endIndex=L.size();   L= L.subList(startIndex, endIndex);  System.out.println("执行");      ActionContext.getContext().put("list", L);    return  "success";}@Overridepublic void validate() {    // TODO Auto-generated method stub    super.validate();}}前台显示:共<s:property value="intRowCount"/>记录&nbsp;&nbsp;共<s:property value="intPageCount"/>页&nbsp;&nbsp;        第<s:property value="pageNow"/>页&nbsp;&nbsp; <s:url action="Serch.action" id="url">                <s:param name="pageNow">                    <s:property value="1" />                </s:param>            </s:url>  <s:a href="%{url}">首页</s:a>    &nbsp;&nbsp;              <s:url action="Serch.action" id="url">                <s:param name="pageNow">                    <s:property value="%{pageNow-1}" />                </s:param>            </s:url>  <s:a href="%{url}">上一页</s:a>    &nbsp;&nbsp; <s:url action="Serch.action" id="url">                <s:param name="pageNow">                    <s:property value="%{pageNow+1}" />                </s:param>            </s:url>  <s:a href="%{url}">下一页</s:a>    &nbsp;&nbsp;<s:url action="Serch.action" id="url">                <s:param name="pageNow">                    <s:property value="lastPage" />                </s:param>            </s:url>  <s:a href="%{url}">尾页</s:a> 


[解决办法]

Java code
        public Page queryForPage(int pageSize, int page)        {            final String hql = "from SNews";// 查询语句                        int allRow = this.allNews().size();            int totalPage = Page.countTotalPage(pageSize, allRow);// 总页数            final int offset = Page.countOffset(pageSize, page);// 当前页开始记录            final int length = pageSize;// 每页记录数            final int currentPage = Page.countCurrentPage(page);            List<SNews> list = this.findAllNews(hql,offset,length);// "一页"的记录            //设置一个页面list            List pageList = new ArrayList();            //把记录添加到list中            for (int i = 0; i < totalPage; i++)             {            pageList.add(i, i + 1);            }            Page pageBean = new Page();            pageBean.setPageSize(pageSize);            pageBean.setCurrentPage(currentPage);            pageBean.setAllRow(allRow);            pageBean.setTotalPage(totalPage);            pageBean.setList(list);            pageBean.setPageList(pageList);            //System.out.println(pageBean.getAllRow());            pageBean.init();            return pageBean;        } 

热点排行