配置: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); } }