最近做的项目都用到Pageable分页,感觉挺好用的,就把它记下来,以后去别的地方也会用的着
想用Pageable,要导入jar:spring-data-commons-1.7.0.RELEASE.jar
先建个Page的实体类用于后面的操作
public class Pager implements Serializable { private static final long serialVersionUID = 1236926132859752284L; // 倒序还是顺序 private String order; // 排序的字段 private String sort; // 当前页 private int page = 1; // 每页分页的行数 private int rows = 10; private Object[] values; // 数据的条数 private long total; // 总页数 private long allPage; public Pager() { } public Pager(int page, int rows, String sort, String order, Object[] values) { this.page = page; this.rows = rows; this.sort = sort; this.order = order; this.values = values; } public Object[] getValues() { return values; } public void setValues(Object[] values) { this.values = values; } public String getOrder() { return order; } public void setOrder(String order) { this.order = order; } public String getSort() { return sort; } public void setSort(String sort) { this.sort = sort; } public int getPage() { return page; } public void setPage(int page) { this.page = page; } public int getRows() { return rows; } public void setRows(int rows) { this.rows = rows; } public long getTotal() { return total; } public void setTotal(long total) { this.total = total; } public long getAllPage() { return allPage; } public void setAllPage() { if (total % this.rows == 0) { allPage = total / rows; } else { allPage = total / rows + 1; } } /** * * 方法描述:获取分页对象 创建人:dujiewei 创建时间:2015-4-15 下午5:07:22 */ public static Pageable getPageable(int page, int rows) { Pageable pageable = new PageRequest(page, rows); return pageable; } /** * * 方法描述:获取分页对象 */ public static Pageable getPageable(Pager pager) { int page = pager.getPage(); int rows = pager.getRows(); String sort = pager.getSort(); String order = pager.getOrder(); Pageable pageable = null; if (null == sort || "".equals(sort)) { pageable = new PageRequest(page, rows); } else { pageable = new PageRequest(page, rows, Sort.Direction.fromStringOrNull(order), sort); } return pageable; } @Override public String toString() { return "Pager [order=" + order + ", sort=" + sort + ", page=" + page + ", rows=" + rows + ", values=" + Arrays.toString(values) + ", total=" + total + ", allPage=" + allPage + "]"; } }
上面的代码有一段代码写的是获取分页对象
*/ public static Pageable getPageable(int page, int rows) { Pageable pageable = new PageRequest(page, rows); return pageable; } /** * * 方法描述:获取分页对象 */ public static Pageable getPageable(Pager pager) { int page = pager.getPage(); int rows = pager.getRows(); String sort = pager.getSort(); String order = pager.getOrder(); Pageable pageable = null; if (null == sort || "".equals(sort)) { pageable = new PageRequest(page, rows); } else { pageable = new PageRequest(page, rows, Sort.Direction.fromStringOrNull(order), sort); } return pageable; }
这段代码才是关键 它是将page对象封装进pageable里面。有了它,我们可以在action或者controller里面写业务逻辑的时候直接使用。demo如下:
比如说我们在用springmvc的时候用到分页
@RequestMapping("/getFinanceLog") public ModelAndView getSettleList(Pager page,FinanceLogVO financeLog, HttpServletRequest request,HttpServletResponse response) { ModelAndView view=new ModelAndView(); Map<String, Object> map=new HashMap<String, Object>(); map.put("ORDER_ID", financeLog.getORDER_ID()); //根据订单编号去查询 map.put("PAY_TYPE", financeLog.getPAY_TYPE()); //根据支付方式去查询 map.put("beginDate", request.getParameter("beginDate")); map.put("endDate", request.getParameter("endDate")); //时间条件查询 map.put("BUSI_TYPE", financeLog.getBUSI_TYPE());//根据业务类型查询 map.put("TRADE_ID",financeLog.getTRADE_ID()); //根据财务流水号查询 if(StrUtil.isNotNull(request.getParameter("beginDate"))&&StrUtil.isNotNull(request.getParameter("endDate"))){ map.put("allDate","allDate");//如果前台两个参数都传过来,那么在数据库里面就用 between and来取时间区间 } if(StrUtil.isNotNull(request.getParameter("beginDate"))&&StrUtil.isNull(request.getParameter("endDate"))){ map.put("startDate","startDate"); } if(StrUtil.isNotNull(request.getParameter("endDate"))&&StrUtil.isNull(request.getParameter("beginDate"))){ map.put("endsDate","endsDate"); } page.setRows(PAGE_SIZE); //每页多少数据 Pageable pageable = Pager.getPageable(page); //页数封装 String userId = (String) request.getSession().getAttribute("UID"); try { if (StrUtil.isNotNull(userId)) { UserVO user = LoginHelper.getSessionForUser(request); //获取登录角色 String userType = user.getUSER_TYPE(); if(userType.equals(Constant.USER_TYPE.SHOP)){ //如果查询出来的用户角色是商家 StoreVO store = storeService.selectStoreByUserId(user.getUSER_ID()); //根据登录角色的userId查询商铺 map.put("STORE_ID", store.getSTORE_ID()); //如果是商家的话,只查询商家的订单流水 } Map<String, Object> list=financeLogService.selectLogList(map,pageable); //查询 view.addObject("logList", list.get("rows")); view.addObject("page_info", list.get("page_info")); view.addObject("param", map); view.setViewName("zhaiqqadmin/finance/financeLog_list"); }else{ // 跳转到登录页面 view.setViewName("/zhaiqqadmin/login"); } } catch (Exception e) { logger.error(e); } return view; }
将Pager.getPageable(page)封装进pageable里面,pageable封装的是page对象。里面的各种参数可以自己设定。在查询的时候要将pageable对象传进去。这样就可以分页了。
相关推荐
总的来说,"mybatis+springmvc分页"项目展示了如何在Java Web开发中集成Mybatis和SpringMVC来实现高效、便捷的数据操作,特别是针对大量数据的分页展示。通过这个项目,开发者可以学习到数据库操作、MVC架构、以及...
本篇文章将详细探讨如何基于Spring MVC实现分页查询,这对于任何处理大量数据的Web应用都是至关重要的。 首先,理解分页的基本概念。分页是将大型数据集划分为较小、更易管理的部分,以提高用户体验并减少服务器...
本项目“javaee-SpringMVC-Mybatis 分页插件”显然是一个结合了这三个框架实现的分页功能示例。下面我们将深入探讨这些技术及其分页插件的应用。 1. **JavaEE**:JavaEE(Java Platform, Enterprise Edition)是...
5. 用户点击分页链接时,发送带有页码信息的请求,SpringMVC Controller捕获该请求,更新Service层的查询条件,再执行分页查询。 此外,为了优化性能,可以考虑使用缓存技术,如Spring的Cache抽象,或者MyBatis自身...
在"springmvc_分页"这个主题中,我们将探讨如何在Spring MVC应用中实现高效的分页功能。 在Web应用中,分页是必不可少的,特别是在处理大量数据时,以提高用户体验和系统性能。Spring MVC 提供了多种方法来实现分页...
在Spring MVC框架中,实现简单分页是一项常见的需求,它能帮助我们有效地管理大量数据,提高用户体验。分页是将数据库中的数据分成多个部分,每次只加载一部分到前端展示,而不是一次性加载所有数据,这对于处理大...
日常情况下使用前端插件进行分页,通过后端解析datatables请求来的参数进行request参数解析(demo中对通过datatable包中对datatables发送过来的参数进行一个解析器的操作)通过控制器action进行service数据解析调用...
在本文中,我们将深入探讨SpringMVC在实现数据管理中的关键功能,包括增删改操作、分页以及数据导入。 1. **增删改操作**:在SpringMVC中,增删改(CRUD)操作是数据库交互的基础。通过Controller层接收HTTP请求,...
**SpringMVC分页程序详解** SpringMVC是Spring框架的一部分,专为构建Web应用程序而设计,它提供了模型-视图-控制器(MVC)架构模式的实现,使得开发人员可以轻松地处理HTTP请求和响应。在这个“springmvc3分页程序...
在本项目中,我们主要探讨的是一个基于Spring 3、Spring MVC、MyBatis和EasyUI的简单Web应用,用于实现基本的CRUD(增、删、查、改)操作和分页功能。这个项目使用了Maven作为构建工具,确保了依赖管理和项目构建的...
在开发Web应用时,列表数据的分页展示是常见的需求,Spring MVC作为一款强大的MVC框架,提供了方便的方式来实现这个功能。本篇文章将探讨如何在Spring MVC中进行分页查询的简单实现,主要关注于通过修改SQL语句来...
在深入探讨SpringMVC框架的设计原理与实现细节之前,我们先来明确一下SpringMVC的基本概念及其在现代Web开发中的地位。SpringMVC是Spring框架的一部分,它是一种基于Java的开源Web应用程序框架,用于简化Web层的开发...
当我们谈论“BootStrap3+SpringMVC分页”时,意味着我们要在SpringMVC驱动的后端服务上实现使用Bootstrap3样式展示的前端分页功能。这通常涉及到以下步骤: 1. **数据获取**:在SpringMVC控制器中,我们需要编写一...
总的来说,本学习资源涵盖了Spring MVC 3的基础知识,包括注解驱动的控制器、数据库操作、数据分页、数据导入导出以及异常处理等重要概念。通过实践这些内容,你将能够构建出功能完备且健壮的Web应用程序。
总的来说,整合SpringMVC和MyBatis并实现通用分页,需要理解这两个框架的工作原理,掌握它们的配置,以及如何在Java代码中使用它们。同时,对于分页功能,需要理解数据库的分页机制,并能将其应用到实际的SQL查询中...
在本项目"SpringMVC+MyBatis+EasyUI简单分页Demo"中,我们将探讨如何结合这三种技术实现一个具备基本分页功能的Web应用。SpringMVC是Spring框架的一部分,负责处理HTTP请求和响应;MyBatis是一个轻量级的持久层框架...
在本项目中,我们主要探讨的是如何利用Spring MVC和MyBatis两大流行框架构建一个具有分页查询功能的Web应用。Spring MVC作为控制层,负责处理HTTP请求和响应,而MyBatis则作为数据访问层,用于处理数据库交互。下面...
这个名为"整合了springMVC和通用分页以及通用mapper的框架"的项目,就是针对这一目标而设计的。它结合了SpringMVC、通用分页和通用Mapper三个核心组件,为Web应用程序提供了强大的数据访问和页面展示能力。 ...
通过这个压缩包,开发者可以快速地搭建一个具备分页功能的SSM(Spring、SpringMVC、MyBatis)项目,并以此为基础进行自己的业务开发。这不仅节省了时间,也降低了出错的可能性,是学习和实践Java Web开发的好资料。
1. **配置环境**:首先,确保Eclipse已安装Maven插件,导入相关依赖到pom.xml文件中,包括SpringMVC、MyBatis和分页插件的依赖。 2. **配置SpringMVC**:创建SpringMVC的配置文件(如:servlet-context.xml),配置...