PageHelper 分頁 可以單表和聯表
阿新 • • 發佈:2019-05-16
ble bsp artifact user erb pageinfo amp 總頁數 ali
配置:1.依賴(註意和mybatis-spring-boot-starter的版本對應)==》2.配置文件==》3.返回的對象類(非必須)
1.依賴
<dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>1.3.2</version> </dependency> <!--9.mybatis的PageHelper--> <!--註意和mybatis-spring-boot-starter的版本對應--><dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper-spring-boot-starter</artifactId> <version>1.2.5</version> </dependency>
2.配置文件
package com.test.springboot.config; import com.github.pagehelper.PageHelper; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import java.util.Properties; /** * @Company:wftdlx * @Author: wjf * @Description: * @Date: Created in 10:48 2019/5/16 */ @Configuration public class PageHelperConfig { /** * 註入pagehelper配置 * * @return */ @Bean public PageHelper getPageHelper() { PageHelper pageHelper = new PageHelper(); Properties properties = new Properties(); properties.setProperty("helperDialect", "mysql"); properties.setProperty("reasonable", "true"); properties.setProperty("supportMethodsArguments", "true"); properties.setProperty("params", "count=countSql"); pageHelper.setProperties(properties); //添加插件 //new SqlSessionFactoryBean().setPlugins(new Interceptor[]{pageHelper}); return pageHelper; } }
3.返回值對象類(可以不寫)
package com.test.springboot.bean; import lombok.Data; import com.github.pagehelper.Page; import java.io.Serializable; import java.util.List; @Data public class PageHelperResult<T> implements Serializable { /** * 序列化id */ private static final long serialVersionUID = -6477868212171605239L; /** * 總記錄數 */ private Long total; /** * 結果集 */ private List<T> rows; /** * 頁數 */ private Integer pageNum; /** * 每頁記錄數 */ private Integer pageSize; /** * 總頁數 */ private Integer pages; public PageHelperResult(List<T> rows) { init(rows); } /** * 初始化 * * @param rows */ private void init(List<T> rows) { if (rows instanceof Page) { Page<T> page = (Page<T>) rows; this.total = page.getTotal(); this.rows = page.getResult(); this.pageNum = page.getPageNum(); this.pageSize = page.getPageSize(); this.pages = page.getPages(); } } }
4.controller測試類
package com.test.springboot.example.controller; import com.github.pagehelper.Page; import com.github.pagehelper.PageHelper; import com.test.springboot.bean.PageHelperResult; import com.test.springboot.bean.ResultModel; import com.test.springboot.example.ennity.User; import com.test.springboot.example.mapper.UserMapper; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.ResponseBody; import javax.annotation.Resource; import java.util.List; /** * @Company:wftdlx * @Author: wjf * @Description: * @Date: Created in 10:51 2019/5/16 */ @Controller @RequestMapping("/pageHelper") public class PageHelperController { @Resource UserMapper UserMapper; //1.返回專門分頁對象 //分頁代碼PageHelper.startPage(pageNo,pageSize);只對其後的第一個查詢有效。如把代碼改為下面這樣,添加一個查詢 @RequestMapping(value = "/page/{page}/{pagesize}", method = RequestMethod.GET, produces = "application/json;charset=UTF-8") @ResponseBody //返回 異步json數據 public PageHelperResult<User> selectSysUser(@PathVariable(name = "page") Integer page, @PathVariable(name = "pagesize") Integer pagesize) { // 這裏寫死pageNum和PageSize // 排序實現: 數據庫字段 + " desc" 或 數據庫字段 + " asc" //String orderBy = 排序字段 + " desc";//按照排序字段 倒序 排序 註意desc前空格 String orderBy = "id" + "desc"; PageHelper.startPage(page, pagesize,orderBy); List<User> users = UserMapper.selectList(null); PageHelperResult<User> pageInfo = new PageHelperResult<User>(users); return pageInfo; } //2.返回標準分頁對象 @RequestMapping(value = "/page2/{page}/{pagesize}", method = RequestMethod.GET, produces = "application/json;charset=UTF-8") @ResponseBody //返回 異步json數據 public ResultModel selectSysUser2(@PathVariable(name = "page") Integer page, @PathVariable(name = "pagesize") Integer pagesize) { // 這裏寫死pageNum和PageSize // 排序實現: 數據庫字段 + " desc" 或 數據庫字段 + " asc" PageHelper.startPage(page, pagesize); List<User> users = UserMapper.selectList(null); Page<User> pageMessage = (Page<User>) users; long total = pageMessage.getTotal(); List<User> results = pageMessage.getResult(); int pageNum = pageMessage.getPageNum(); int pageSize = pageMessage.getPageSize(); int pages = pageMessage.getPages(); //正確結果 Object[] result = {total, results, pageNum, pageSize, pages}; return new ResultModel(ResultModel.SUCCESS, "分頁查詢成功", result); } }
PageHelper 分頁 可以單表和聯表