PageHelper 分页 可以单表和联表
配置:1.依赖(注意和mybatis-spring-boot-starter的版本对应)==》2.配置文件==》3.返回的对象类(非必须)
SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。
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);
}
}
更多精彩

