最近学习框架做了一个小网站,基本功能都实现了但是分页没办法用框架思想实现,查了资料找到一个不错的,修改了下分享下
2013-11-19 19:55
886 查看
里边的一些方法我也理解,核心思想就是把你传入的hql语句进行拆分重组成SQLserver2005的新分页函数row_number() over(order by id)最后将结果返回字符串,作为将来要传入hibernate的sql语句.测试返回的语句为select * from (,ROW_NUMBER() OVER(order by Book.bookid as book) as _page_row_num_hb from Book as book ) temp where _page_row_num_hb BETWEEN 11 and 20.可以使用.之后返回的list通过struts2 配置antion中的方法放到一个session中然后在jsp页面通过传入不同的参数实现分页这些代码就不演示了.
public class Spage extends SQLServerDialect{ public static void main(String[] args) { Spage sp=new Spage(); String sql=sp.getLimitString("from Book as book order by Book.bookid as book", 10, 20); System.out.println(sql); } public static int getLastIndexOfOrderBy(String sql){ return sql.toLowerCase().lastIndexOf("order by"); } public String getLimitString(String querySelect, int offset, int limit ){ int lastIndexOfOrderBy = getLastIndexOfOrderBy(querySelect); // 没有 order by 或第一页的情况下 if(lastIndexOfOrderBy<0 || querySelect.endsWith(")") || offset==0) return super.getLimitString(querySelect, 0, limit); else { //取出 order by 语句 String orderby = querySelect.substring(lastIndexOfOrderBy, querySelect.length()); //取出 from 前的内容 int indexOfFrom = querySelect.toLowerCase().indexOf("from"); String selectFld = querySelect.substring(0,indexOfFrom); //取出 from 语句后的内容 String selectFromTableAndWhere = querySelect.substring(indexOfFrom, lastIndexOfOrderBy); StringBuffer sql = new StringBuffer(querySelect.length()+100); sql.append("select * from (") .append(selectFld) .append(",ROW_NUMBER() OVER(").append(orderby).append(") as _page_row_num_hb ") .append(selectFromTableAndWhere).append(" ) temp ") .append(" where _page_row_num_hb BETWEEN ") .append(offset+1).append(" and ").append(limit); return sql.toString(); } } //使offset 参数生效 public boolean supportsLimitOffset(){ return true; }}
相关文章推荐
- [JAVA]集合框架之自己实现一个具有基本增查删改功能的ArrayList
- 最近实现的一个分离文章内容功能,挺有意思,分享一下
- 最近实现的一个分离文章内容功能,挺有意思,分享一下
- 配置SSH所需jar包地址 + SSH实现分页功能+ SSH基本框架配置
- 分享一个iOS下实现基本绘画板功能的简单方法
- 有段时间没有更新博客了,最近比较忙,今天和大家分享一个使用Swift实现的新特性功能吧
- 一次偶然机遇找到一个不错的关于Android实现加载gif动画的实例,写一下分享个大家。
- JXCELL实例学习与研究(六) 之 sheet的分页功能的实现,以及基本EXCEL公式的使用 以及补充函数说明
- 最近在一个外网的网站,困扰了我多天的循环和大家分享下,也做为我以后工作之用.第一种(信息作用循环.实现方式后台时钟在前台循环滚动(左右)显示).
- 最近做了一个类似社交的网站,看到新浪微博右侧有一个网页在线聊天的功能,如何才能实现网页在线聊天功能(新浪微博这种聊天)?
- 最近找到一个很好的 API CODE 网站,分享一下
- 国防科技论坛,一个不错的技术资料分享网站
- 分享D瓜哥最近攒的资料(架构方面)、架构分析与设计、知名网站架构分析:Amazon网站架构学习总结、探索Google App Engine背后的奥秘、Facebook图片存储架构、优酷网架构、YouTube架构
- Mybatis实现简单的分页,以及基本的查询修改功能
- 以前经常来这里,但是很少写博客.最近在做silverlight 项目.前几天被一个 类似.netmarquee的循环滚动的功能憋了很长时间,现在和大家分享下.
- 一个不错的技术视频学习网站:http://bbs.langsin.com/index.php?fromuid=58264
- netty框架的学习笔记 + 一个netty实现websocket通信案例
- 分享一个最新最全的hadoop学习资料
- 强烈推荐一个上网以来见过的最好的学习资料网站,全部免费!
- Prototype功能预览十:面向未来技术的框架 - 一个业务实现同时支持dubbo/dubbox/spring mvc/hession