1,在pom.xml中注入分頁的配置
<dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper</artifactId> <version>4.1.0</version> </dependency>
2,定義公共實體類,包含頁碼,頁尺寸
import java.io.Serializable; import com.github.pagehelper.PageHelper; public abstract class AbstractPageForm<T extends AbstractPageForm<T>> implements Serializable { private static final long serialVersionUID = 1L; /** * @Description 頁碼為首頁 */ protected int pageNum = 1; /** * @Description 每頁顯示數量,默認為5 */ protected int pageSize = 10; public int getPageNum() { return pageNum; } public void setPageNum(int pageNum) { this.pageNum = pageNum; } public int getPageSize() { return pageSize; } public void setPageSize(int pageSize) { this.pageSize = pageSize; } /** * @Title enablePaging * @Description 啟用分頁 * @return */ @SuppressWarnings("unchecked") public final T enablePaging() { PageHelper.startPage(pageNum, pageSize); return (T) this; } }
import java.util.Properties; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import com.github.pagehelper.PageHelper; @Configuration public class PageBean{ @Bean public PageHelper pageHelper() { PageHelper pageHelper = new PageHelper(); Properties p = new Properties(); p.setProperty("offsetAsPageNum", "true"); p.setProperty("rowBoundsWithCount", "true"); p.setProperty("reasonable", "true"); pageHelper.setProperties(p); return pageHelper; } }
3,定義分頁查詢條件的VO,要繼承AbstractPageForm注意<>中要與繼承類保持一致
import com.ulic.gis.util.paging.AbstractPageForm; public class RolePageVO extends AbstractPageForm<RolePageVO>{ private static final long serialVersionUID = 1L; private String roleName; public String getRoleName() { return roleName; } public void setRoleName(String roleName) { this.roleName = roleName; } }
4,controller層的關鍵分頁代碼
@RequestMapping(value="/findAllRole") public ModelAndView findAllRole(HttpServletRequest request,HttpServletResponse response,@ModelAttribute RolePageVO rolePageVO){ ModelAndView mav = new ModelAndView(); log.info("rolePageVO:{}",JSONUtils.object2json(rolePageVO)); PageHelper.startPage(rolePageVO.getPageNum(), rolePageVO.getPageSize()); List<RoleVO> roleList = roleManageService.getRoleByparam(rolePageVO); PageInfo<RoleVO> rolePageList = new PageInfo<>(roleList); mav.addObject("roleList", rolePageList); mav.addObject("rolePageVO",rolePageVO); mav.setViewName("/authorityManage/roleInfoList"); return mav; }
此處需要注意,上面粉紅色查詢代碼必須放在兩行紅色代碼之間,且只能有一條查詢語句。如果出現多條查詢語句,則只給第一條查詢語句分頁。
5,jsp頁面中通過下面的方式去除分頁數據
PageInfo<RoleVO> info = (PageInfo<RoleVO>)request.getAttribute("roleList"); List<RoleVO> roleList = info.getList(); //分頁數據 RolePageVO conditionVo = (RolePageVO)request.getAttribute("rolePageVO");//參數