通用数据库分页方案

技术架构:
web层可以是任意的MVC框架,目前只实现了SpringMVC和Struts的版本(Struts版已经在weblogic7下跑通,tomcat5还不行);
dao层也没有任何限制,只要按照范例中的模式来做既可;
最终页面上用一个标签来显示翻页按钮等。
btw:谁有兴趣想写个webwork版本的,可以和我联系,或直接发个patch给我
---------------------------------
工作原理:想法很简单,就是应用设计模式里的"模板方法模式",把分页计算的逻辑封装在一个抽象父类(PagingController)里面,留下三个抽象方法:doHandleRequest(处理请求)、getTotalRecordsNumber(计算总记录数)、makeSearchCriteria(构造查询条件,可选)供子类型重写,使得子类型尽量的简单,让我们可以专注于业务逻辑而不需要处理分页逻辑。示例如下:
代码
  1. public class UserPagingController extends PagingController {   
  2.     private final Logger logger = Logger.getLogger(this.getClass());   
  3.     private UserDAO userDAO;   
  4.     protected ModelAndView doHandleRequest(HttpServletRequest request,   
  5.             HttpServletResponse response) throws Exception {   
  6.         Map map = super.getSearchCriteria(request);   
  7.         int beginNo = super.computeRecordsBeginNo(request);   
  8.         int recordsNumber = super.computeRecordsNumberToRead(request);   
  9.         List usersList = userDAO.findUsers(map, beginNo, recordsNumber);   
  10.         logger.debug(usersList);   
  11.         return new ModelAndView("usersList""usersList", usersList);   
  12.     }   
  13.     protected int getTotalRecordsNumber(HttpServletRequest request) {   
  14.         int result = userDAO.countUsers(super.getSearchCriteria(request));   
  15.         logger.debug("users number================:" + result);   
  16.         return result;   
  17.     }   
  18.     protected Map makeSearchCriteria(HttpServletRequest request) {   
  19.         HashMap map = new HashMap();   
  20.         String firstName = request.getParameter("firstName");   
  21.         if (firstName != null && firstName.trim().length() > 0) {   
  22.             map.put("firstName", firstName);   
  23.         }   
  24.         logger.debug(map);   
  25.         return map;   
  26.     }   
  27.     public void setUserDAO(UserDAO userDAO) {   
  28.         this.userDAO = userDAO;   
  29.     }   
  30. }  
<script>render_code();</script>
Struts版原理相同。
在页面显示翻页链接只需一行代码:
代码
  1. <page:pagebar url="/user_query.html?" bordercolor="#F4F9FF" bgcolor="#F4F9FF"/>  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值