SSH 怎么用hql实现分页 急

问题描述

SSH 怎么用hql实现分页 急
SSH 怎么用hql实现分页 急SSH 怎么用hql实现分页 急SSH 怎么用hql实现分页 急SSH 怎么用hql实现分页 急SSH 怎么用hql实现分页 急SSH 怎么用hql实现分页 急SSH 怎么用hql实现分页 急SSH 怎么用hql实现分页 急SSH 怎么用hql实现分页 急SSH 怎么用hql实现分页 急SSH 怎么用hql实现分页 急SSH 怎么用hql实现分页 急SSH 怎么用hql实现分页 急SSH 怎么用hql实现分页 急SSH 怎么用hql实现分页 急SSH 怎么用hql实现分页 急SSH 怎么用hql实现分页 急SSH 怎么用hql实现分页 急SSH 怎么用hql实现分页 急SSH 怎么用hql实现分页 急SSH 怎么用hql实现分页 急

解决方案

、在ArticleDao中添加分页查询的方法:

/**
* 分页查询
* @param hql 查询的条件
* @param offset 开始记录
* @param length 一次查询几条记录
* @return
*/
public List queryForPage(final String hqlfinal int offsetfinal int length);

/** *//** * 查询所有记录数 * @param hql 查询的条件 * @return 总记录数 */public int getAllRowCount(String hql);

二、在ArticleDaoImpl中给出相应方法的具体实现:

/**

  • 查询所有记录数*
  • @return 总记录数*/public int getAllRowCount(String hql) {return getHibernateTemplate().find(hql).size();}

/**

  • 分页查询*
  • @param hql
  • 查询的条件
  • @param offset
  • 开始记录
  • @param length
  • 一次查询几条记录
  • @return*/public List queryForPage(final String hql final int offsetfinal int length) {List list = getHibernateTemplate().executeFind(new HibernateCallback() {public Object doInHibernate(Session session)throws HibernateException SQLException {Query query = session.createQuery(hql);query.setFirstResult(offset);query.setMaxResults(length);List list = query.list();return list;}});return list;}

三、在ArticleService中添加方法分页查询的方法:

/**
* 分页查询
* @param currentPage 当前第几页
* @param pageSize 每页大小
* @return 封闭了分页信息(包括记录集list)的Bean
*/
public PageBean queryForPage(int pageSizeint currentPage);

四、在ArticleServiceImpl中给出相应方法的具体实现:

/**

  • 分页查询
  • @param currentPage 当前第几页
  • @param pageSize 每页大小
  • @return 封闭了分页信息(包括记录集list)的Bean
    */
    public PageBean queryForPage(int pageSizeint page){

    final String hql = ""from Article"";

    int allRow = articleDao.getAllRowCount(hql);

    int totalPage = PageBean.countTotalPage(pageSize allRow);

    final int offset = PageBean.countOffset(pageSize page);

    final int length = pageSize;

    final int currentPage = PageBean.countCurrentPage(page);
    List list = articleDao.queryForPage(hqloffset length); //""一页""的记录

    //把分页信息保存到Bean中
    PageBean pageBean = new PageBean();
    pageBean.setPageSize(pageSize);

    pageBean.setCurrentPage(currentPage);
    pageBean.setAllRow(allRow);
    pageBean.setTotalPage(totalPage);
    pageBean.setList(list);
    pageBean.init();

    return pageBean;
    }

最后一步,根据需要,在分页页面上的相应位置进行配置。基本配置如下:

首页
上一页
/s:if
首页
[url=...?page=上一页[/url]

/s:else


"">下一页

"">尾页

/s:if
下一页
尾页
/s:else

共value=""pageBean.allRow"" />条记录value=""pageBean.totalPage"" />页

至此,网站的分页功能就完成了。

解决方案二:
、在ArticleDao中添加分页查询的方法:

/**
* 分页查询
* @param hql 查询的条件
* @param offset 开始记录
* @param length 一次查询几条记录
* @return
*/
public List queryForPage(final String hqlfinal int offsetfinal int length);

/** *//** * 查询所有记录数 * @param hql 查询的条件 * @return 总记录数 */public int getAllRowCount(String hql);

二、在ArticleDaoImpl中给出相应方法的具体实现:

/**

  • 查询所有记录数*
  • @return 总记录数*/public int getAllRowCount(String hql) {return getHibernateTemplate().find(hql).size();}

/**

  • 分页查询*
  • @param hql
  • 查询的条件
  • @param offset
  • 开始记录
  • @param length
  • 一次查询几条记录
  • @return*/public List queryForPage(final String hql final int offsetfinal int length) {List list = getHibernateTemplate().executeFind(new HibernateCallback() {public Object doInHibernate(Session session)throws HibernateException SQLException {Query query = session.createQuery(hql);query.setFirstResult(offset);query.setMaxResults(length);List list = query.list();return list;}});return list;}

三、在ArticleService中添加方法分页查询的方法:

/**
* 分页查询
* @param currentPage 当前第几页
* @param pageSize 每页大小
* @return 封闭了分页信息(包括记录集list)的Bean
*/
public PageBean queryForPage(int pageSizeint currentPage);

四、在ArticleServiceImpl中给出相应方法的具体实现:

/**

  • 分页查询
  • @param currentPage 当前第几页
  • @param pageSize 每页大小
  • @return 封闭了分页信息(包括记录集list)的Bean
    */
    public PageBean queryForPage(int pageSizeint page){

    final String hql = ""from Article"";

    int allRow = articleDao.getAllRowCount(hql);

    int totalPage = PageBean.countTotalPage(pageSize allRow);

    final int offset = PageBean.countOffset(pageSize page);

    final int length = pageSize;

    final int currentPage = PageBean.countCurrentPage(page);
    List list = articleDao.queryForPage(hqloffset length); //""一页""的记录

    //把分页信息保存到Bean中
    PageBean pageBean = new PageBean();
    pageBean.setPageSize(pageSize);

    pageBean.setCurrentPage(currentPage);
    pageBean.setAllRow(allRow);
    pageBean.setTotalPage(totalPage);
    pageBean.setList(list);
    pageBean.init();

    return pageBean;
    }

最后一步,根据需要,在分页页面上的相应位置进行配置。基本配置如下:

首页
上一页
/s:if
首页
[url=...?page=上一页[/url]

/s:else


"">下一页

"">尾页

/s:if
下一页
尾页
/s:else

共value=""pageBean.allRow"" />条记录value=""pageBean.totalPage"" />页

至此,网站的分页功能就完成了。

解决方案三:
/**
* 查询分页
*/
@Override
public List query(final BizClaimVoucher bcv
final Integer curPage final Integer pageSize final SysEmployee emp) {
List list = this.getHibernateTemplate().executeFind(
new HibernateCallback() {

                public Object doInHibernate(Session session)                        throws HibernateException SQLException {                    String hql = ""from BizClaimVoucher where 1=1"";                    if (emp != null) {                        hql += ""and sysEmployeess.name='"" + emp.getName()                                + ""'"";                    }                    if (bcv != null) {                        if (bcv.getStatus() != null                                && !bcv.getStatus().equals(""全部"")) {                            hql += ""and status ='"" + bcv.getStatus() + ""'"";                        }                        if (bcv.getCreateTime() != null                                && bcv.getCreateTime().equals("""")) {                            hql += ""and createTime>=to_date('""                                    + bcv.getCreateTime()                                    + ""''YYYY-MM-DD HH24:MI:SS')"";                        }                        if (bcv.getModifyTime() != null                                && bcv.getModifyTime().equals("""")) {                            hql += ""and modifyTime<=to_date('""                                    + bcv.getModifyTime()                                    + ""''YYYY-MM-DD HH24:MI:SS')"";                        }                    }                    Query query = null;                    query = session.createQuery(hql);                    query.setFirstResult((curPage - 1) * pageSize);                    query.setMaxResults(pageSize);                    return query.list();                }            });    return list;}

解决方案四:
/**
* 总记录条数
*/
@Override
public int selectCount(BizClaimVoucher bcv SysEmployee emp) {
int count = 0;
try {
String hql = ""from BizClaimVoucher where 1=1"";
if (emp != null) {
hql += ""and sysEmployeess.name='"" + emp.getName() + ""'"";
}

        if (bcv != null) {            if (bcv.getStatus() != null && !bcv.getStatus().equals(""全部"")) {                hql += ""and status ='"" + bcv.getStatus() + ""'"";            }            if (bcv.getCreateTime() != null                    && bcv.getCreateTime().equals("""")) {                hql += ""and createTime>=to_date('"" + bcv.getCreateTime()                        + ""''YYYY-MM-DD HH24:MI:SS')"";            }            if (bcv.getModifyTime() != null                    && bcv.getModifyTime().equals("""")) {                hql += ""and modifyTime<=to_date('"" + bcv.getModifyTime()                        + ""''YYYY-MM-DD HH24:MI:SS')"";            }        }        List list = this.getHibernateTemplate().find(hql);        if (list != null) {            count = list.size();        }    } catch (Exception e) {        e.printStackTrace();    }    return count;}

解决方案五:
http://zhidao.baidu.com/link?url=wMagNXdPBaZjWWxmfjGFZ9eur_nI7fxUVdEr0QCcULeWJ09wutYO6weVmPLzqGlaglZp_5R4w2FJNzxoFIxP4_

解决方案六:
最关键的就是query.setFirstResult(起始行) 还有一个方法就是query.setMaxResults(查询的长度) 每次改变的就是起始行 比如你一次想查询五行 长度就是5 第一次起始值就是0第二次起始值就是5 以此类推

时间: 2024-08-04 09:58:31

SSH 怎么用hql实现分页 急的相关文章

ssh-使用SSH框架,hql查询时候语句有问题,怎么修改????

问题描述 使用SSH框架,hql查询时候语句有问题,怎么修改???? org.springframework.orm.hibernate3.HibernateQueryException: Path expected for join! [select a.title,a.docSize,a.createTime,b.value,c.value from com.aodong.juice.wendang.entity.JuiceDocument as a left join JuiceCombo

easyui-easyUI分页 急急急 求大牛解答

问题描述 easyUI分页 急急急 求大牛解答 怎么保证下一页一直可用 实现看多少条查多少条 不一次性查出来 解决方案 你看一下下面这个链接里面,Server Side Pagination的例子.一次性查出来的是客户端分页,你要看的就是这个服务端分页.http://www.jeasyui.com/demo/main/index.php?plugin=DataGrid&theme=default&dir=ltr&pitem= 解决方案二: 如果是asp.net参考下我这篇博客:ht

ssh 查询条件怎么搞在线急求。。。。

问题描述 ssh 查询条件怎么搞在线急求.... 这是jsp界面dao层怎么写 解决方案 select * from user_info t where 1=1 if(name!=null){ and t.name=:name } if(sex!=null){ and t.sex=:sex } if(age!=null){ and t.age=:age } 解决方案二: 进行字符串的连接,例如: StringBuffer sb = new StringBuffer(); String usern

oracle 数据库 hql语句分页

问题描述 oracle 数据库 hql语句分页 库是oracle的.框架是hibernate. 现在想弄分页 如查询用户前10条 hql是from User 现在想在这个基础上加分页.不用.query.setFirst()之类的方法. 如何直接加在hql中. 谢谢 解决方案 使用rownum select * from (select * from table order by age) where rownum < 11 解决方案二: 这个我sql知道.但是我想知道hql怎么写 解决方案三:

HQL的分页

  Query q= session.createQuery("from Student "); //Query q= session.createQuery("select u.name from Stuent u where u.age >15"); q.setFirstResult(start); q.setMaxResults(pagesize); q.List();   start:开始检索的位置,int pagesize:返回最大记录行,int  

关于SSH的一个异常,在线急等,毕业设计,请高手帮助解决下

问题描述 严重:Servlet.service()forservletactionthrewexceptionjava.lang.NullPointerExceptionatorg.hibernate.type.AbstractType.getHashCode(AbstractType.java:112)atorg.hibernate.type.AbstractType.getHashCode(AbstractType.java:120)atorg.hibernate.engine.Entity

分页查询-[SQLServer]传入的表格格式数据流(TDS)远程过程调用(RPC)协议流不正确

问题描述 [SQLServer]传入的表格格式数据流(TDS)远程过程调用(RPC)协议流不正确 Caused by: java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC][SQLServer]传入的表格格式数据流(TDS)远程过程调用(RPC)协议流不正确. 使用的是sqlserver 2005 ,搭建SSH框架的时候进行分页,结果无法查询分页..后来网上说是因为驱动包要换成2005 的,我按照操作做了...结果没

sql-jsp +oracle分页问题 主要是在SQL语句上

问题描述 jsp +oracle分页问题 主要是在SQL语句上 <%@ page language=""java"" contentType=""text/html; charset=UTF-8"" pageEncoding=""UTF-8""%> <%@page import=""java.sql.*""%><!DO

hibernate关于servlet转发并且有分页条件、模糊查询

问题描述 hibernate关于servlet转发并且有分页条件.模糊查询 功能需求: 进入该页面加载一个servlet导入展示所有房屋信息: 当进行搜索框搜索时,只显示相关信息: 所有信息都已分页:可以进去上一页,下一页跳转: 说明一下思路就行. 解决方案 Hibernate动态条件查询并分页Hibernate分页的实现(支持模糊查询)Hibernate HQL查询 分页查询 模糊查询 解决方案二: 机器人给你的答案就可以.