项目地址:https://github.com/VincentLiSH/powerstone
smartpagination的优势:
1、方便扩展:借助“Template Method”设计模式封装了分页逻辑中的固定算法,同时为不同数据访问层技术预留扩展点,因此底层可以采用ORM、iBatis、JDBC等技术访问数据库,甚至可以不是数据库(比如可以是另一个服务的API);
2、提供了Web层的封装简化开发,但并不绑定某种MVC框架;
3、支持复杂查询条件表单、查询结果分页、排序、翻页和排序过程中表单状态记忆;
4、服务器端分页,每次只取出一页数据,不会因数据量大而占用大量内存;
核心的分页逻辑封装在BasePagingController中
https://github.com/VincentLiSH/powerstone/blob/main/SmartPagination/src/org/powerstone/smartpagination/common/BasePagingController.java
附带了一个SpringMVC+Hibernate+JDBC+iBATIS实现的Sample应用,用来演示如何使用此框架。
典型应用代码如下:仅不到40行代码即可实现一个一般分页和一个复杂查询分页功能。
public ModelAndView listHibernate(HttpServletRequest request, HttpServletResponse response)throws Exception {
BaseHbmPagingController ctrl = new BaseHbmPagingController(baseHibernateDao) {
@Override
protected PageInfo<DetachedCriteria, Order> makePageInfo(HttpServletRequest request) {
HbmPageInfo pi = new HbmPageInfo();
pi.setCountDistinctProjections("id");
pi.setExpression(DetachedCriteria.forClass(UserModel.class));
// pi.addOrderByAsc("id");
return pi;
}
};
ctrl.handleRequest(request, response);
return new ModelAndView("userList", "userList", BaseHbmPagingController.getPageData(request));
}