Hibernate实现不带条件的简单分页查询

Hibernate实现不带条件的简单分页查询。


主要用到:

Query query = getSessionDao().createQuery(hql1);

及两个分页条件:

query.setFirstResult(firstPage*pageSize);//设置查询起始数

query.setMaxResults(pageSize);//设置查询最大结果数

代码示例:

    /**
    * 不带条件的简单分页查询
    * @author lxh
    * @version 1.0
    *
    */
    publicclassQueryListByPageextendsHibernateDaoImpl{
    /**
    * * 简单的分页的查询数据列表
    *
    * @param modelName
    * 实体类名
    * @param firstPage
    * 查询第几页
    * @param pageSize
    * 每页显示几条数据
    * @return 一页的数据列表,和总页数
    */
    @SuppressWarnings("unchecked")
    publicQueryResult findAllList(String modelName,int firstPage,int pageSize){
        String hql1="from "+modelName;
        String hql2="select count(*) from "+modelName;
        Query query = getSessionDao().createQuery(hql1);
        query.setFirstResult(firstPage*pageSize);
        query.setMaxResults(pageSize);
        Long count =(Long) getSessionDao().createQuery(hql2).uniqueResult();
        int totalPageNum=count.intValue()/pageSize+1;//总页数
        List list = query.list();
        // 返回结果
        returnnewQueryResult(totalPageNum, list);
        /**
        *
        * Map map = new HashMap();
        * map.put("xx",list);
        * map.put("xxx",totalPageNum);
        * JSONObject jobj = JSONTUtil.toObject(map);
        *
        */
    }



    import java.util.List;
    publicclassQueryResult{
        privateint totalPageNum;// 总记录数
        privateList list;// 一页的数据
        publicQueryResult(int totalPageNum,List list){
            this.totalPageNum = totalPageNum;
            this.list = list;
        }
        publicint getTotalPageNum(){
            return totalPageNum;
        }
        publicvoid setTotalPageNum(int totalPageNum){
            this.totalPageNum = totalPageNum;
        }
        publicList getList(){
            return list;
        }
        publicvoid setList(List list){
            this.list = list;
        }
    }
说明:<br>一、含演示数据库建立脚本(较简单)<br>二、使用Struts、Hibernate和display超简单实现分页,你不用在页面上再写很多<%%>和很多判断,简单到只需要几行语句:<br><html:form method="post" action="/displayList"><br> <display:table name="lst" cellspacing="0" border="1" cellpadding="0" requestURI="displayList.do" export="true"><br> <display:column property="id" title="编号" /><br> <display:column property="name" title="名字" /><br> <display:column property="age" title="年龄" /><br> </display:table><br> <pag:pagination name="pv" requestUri="displayList.do"></pag:pagination><br></html:form><br>这就是全部语句,不用写任何代码。<br>三、由于使用了display,所以自动实现了Excel | XML | CSV 的导出功能。<br>四、生成页面导航的样式是:<br>[首页/前一页] [后一页/尾页] 显示第1到1条 共3项 每页显示2项 共3页 第1页 GO<br>其中每页显示2项中的项操作人员可以随便改,“第1页”中的页号可以随便改,操作相当的灵活。我看到的样式暂只这一种,我想在display中应可以方便的改变导航样式,不行的话你就去修改display的标签源码,想改成什么样就改成什么样。<br><br>心得:<br>一、今天才明白使用Hibernate还有一个好处,你可以随便改数据库,你可以一会用oracle,一会用sqlserver,一会用mysql,总之你写成的代码换一种数据库,最多就是改一下那几个xml文件,个人感觉这才是java一个地方编写到处运行呢。<br>二、明白了使用标签的好处。<br><br>另提示一点:<br>打开测试用“http://localhost:8080/StrutsHibernateDisplay/displayList.do”,如果直接打开list.jsp会告诉你没有数据的。<br><br>代码是wenlong342的,我只是稍做修改,然后写了上面的说明文字。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值