hibernate之翻页的实现

pageSize:每页记录数
pageNow:当前页码

@Override
public List<Uploadinfo> onePage(int pageNow, int pageSize,String type) {
    // TODO Auto-generated method stub
    String sql;
    if("picture".equals(type)){
         sql = "from Uploadinfo where picturepath1 <> '' and picturepath1 <> 'picture/meizhaopian.png' order by dataTime desc";

    }else{
        sql="from Uploadinfo order by dataTime desc";
    }
    Query query = itemDaoImpl.getQuery(sql);
    //设置起始页
    query.setFirstResult((pageNow - 1) * pageSize);
    //设置每页最大记录数
    query.setMaxResults(pageSize);
    List<Uploadinfo> infolist = query.list();
    return infolist;
}

index.jsp
bootstrap中的分页组件

<nav style="text-align: center">
    <ul class="pagination" id="pageUl"></ul>
</nav>

index.js

$(window).load(function() {
    获取记录条数
    queryAll("rest/Uploadinfo/totlePages");
});
function queryAll(url){
    $.ajax({
        type : "post",
        url :  url,
        dataType : "text",
        data:{
             "type":""
        },
        success : function(msg) {
            var pages = Math.ceil(msg/5); 
            var element = $('#pageUl');//对应下面ul的ID  
            var options = { 
                size:"normal",
                alignment:"center",
                bootstrapMajorVersion:3,  
                currentPage: 1,//当前页面  
                numberOfPages: 5,//一页显示几个按钮(在ul里面生成5个li)  
                totalPages: pages, //总页数  
                itemTexts: function(type, page, current) { //修改显示文字
                    switch (type) {
                    case "first":
                        return "第一页";
                    case "prev":
                        return "上一页";
                    case "next":
                        return "下一页";
                    case "last":
                        return "最后一页";
                    case "page":
                        return page;
                    }
                }, 
                onPageClicked: function (event, originalEvent, type, page) { 
                    //换页,下一页
                    paginator(page);
                },
            }  
            //分页启动
           element.bootstrapPaginator(options); 
           paginator(1);
        }
    });
}
function paginator(pageNow) {
    $.ajax({
        type : "post",
        url :  "rest/Uploadinfo/onePageData",
        dataType : "json",
        data:{
            "pageNow":pageNow,
            "pageSize":5,
            "type":""
        },
        success : function(arrData) {
            console.dir(arrData)
            var str="";
            var name;
//          for (i = (page - 1) * 5; i < page * 5; i++) {
            for(var i=0; i<arrData.length; i++){
                    var pictureUrl = arrData[i].picturepath1;
                    var param = "content.jsp?id="+ arrData[i].id;
                    var content = arrData[i].content;
                    var s = content.substr(0, 7);       
                    if(arrData[i].telephone==""){
                        name="匿名用户"
                    }
                    else{
                        name=arrData[i].telephone;
                    }
                    str += '<div class="wz"><h3 style="width:95%;"><a href="'
                        + param
                        + '" title="'
                        + arrData[i].telephone
                        + ""
                        + '">'
                        + s
                        + "..."
                        + '</a></h3><dl><dt>'
                        + '<a href="'
                        + param
                        + '"  style="margin-top: 0px;" title="阅读全文"><img src="'
                        + pictureUrl
                        + '" width="200" height="123" alt=""></a></dt><dd>'
                        + '<p class="dd_text_1">'
                        + arrData[i].content
                        + '</p><p class="dd_text_2">'
                        + ' <span class="left author" >'
                        + name
                        + '</span><span class="left sj" style="padding-left:80px;">'
                        + arrData[i].dataTime
                        + '</span>'
                        + '<span class="left yd"><a href="'
                        + param
                        + '"  title="阅读全文" style="margin-left: auto";>阅读全文</a></span>'
                        + '<div class="clear"></div></p></dd><div class="clear"></div></dl></div>';

                    $('#infolist').html(''); 
                    $('#infolist').append(str);
                }
            }
    });
}

onePageData中调用onePage方法来实现分页。

java

//获取记录条数
@RequestMapping(value = "/totlePages", method = RequestMethod.POST)
@ResponseBody
public int totlePages(@RequestParam("type") String type) {
    List<Uploadinfo> itemList = itemServiceImpl.totalPage(type);
    int size = itemList.size();
    return size;
}

具体详见[hibernate之翻页的实现]一文,原文不定时更新(http://chen1218chen.github.io/2016/06/13/hibernate%E4%B9%8B%E7%BF%BB%E9%A1%B5%E7%9A%84%E5%AE%9E%E7%8E%B0/)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Hibernate中的query 博客分类: • Hibernate HibernateSQLSQL ServerMySQLJDBC Hibernate中的query.setFirstResult(),query.setMaxResults(); 一、query.scroll()和query.setFirstResult(),query.setMaxResults();这两种方法都可以取到一定范围内的数据,用来数据分页显示。那么两者区别,以及两者的效率如何? 答:1.scroll是用JDBC2.0的可滚动结果集实现;query.setMaxResults();query.setFirstResult()是数据库SQL语句实现。 2.你说是在数据库就分页好呢?还是把结果集都取到内存再分页好呢?(应该是在数据库就分了好些吧,但是如果在内存分页的话,换页的时候是不是更快一些呢?) 3.在数据库进行分页是首选的方式。数据库分页实际上是利用数据库本身SQL扩展的功能进行分页,例如MySQL的 limit 0,50这样的SQL语句。不但速度快,而且非常节省内存。不过不是每种数据库的都有这种分页支持的SQL,例如SQL Server就不支持。 4.scroll是利用JDBC2.0的功能做分页的,那么就完全取决于特定数据库的JDBC Driver的实现了。事实上大部分JDBC Driver都是把所有的结果集都一次取到内存,然后再分页的。如果这个结果集非常大,例如几万条,不但程序执行速度会很慢,而且很容易导致out of memory。当然个别JDBC Driver使用了服务器端游标来实现,那么就不会导致这种问题,例如jTDS。 二、Hibernate可以使用Query.setMaxResults方法简单地设置需要查询的最大结果集。 然后Hibernate会自动根据所设置的数据库方言翻译成相应的SQL语句提交给数据库。比如如果数据库是Oracle,SQL Server等,则翻译为类似select ... top 10之类的SQL语句,若是MySQL,则翻译为select ... limit 10之类的SQL。 三、举例: Java代码 1. import org.hibernate.Query; 2. 3. query.setFirstResult(0),query.setMaxResults(4);相当于MySQL中的limit 0, 4; 4. public void testQuery() { 5. Session session = null; 6. try { 7. session = HibernateUtils.getSession(); 8. session.beginTransaction(); 9. Query query = session.createQuery("from User"); 10. query.setFirstResult(0);//从第一条记录开始 11. query.setMaxResults(4);//取出四条记录 12. List userList = query.list(); 13. for (Iterator iter=userList.iterator(); iter.hasNext();) { 14. User user = (User)iter.next(); 15. System.out.println(user.getId()); 16. System.out.println(user.getName()); 17. } 18. session.getTransaction().commit(); 19. }catch(Exception e) { 20. e.printStackTrace(); 21. session.getTransaction().rollback(); 22. }finally { 23. HibernateUtils.closeSession(session); 24. } 25. }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值