问题描述
- 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
…
"">下一页
"">尾页
共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
…
"">下一页
"">尾页
共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;}
解决方案六:
最关键的就是query.setFirstResult(起始行) 还有一个方法就是query.setMaxResults(查询的长度) 每次改变的就是起始行 比如你一次想查询五行 长度就是5 第一次起始值就是0第二次起始值就是5 以此类推