前端参数是:
page:表示第几页 int型
rows:每页的记录数 int型
后端参数是:
total:表的总记录数 int型
rows:对应页面的记录 List<T>
使用一个封装类EasyUIDataGridResult.java,用于向前端传递参数.要实现序列化.防止出现一些奇妙的问题:getInputStream() has already been called for this request
EasyUIDataGridResult.java
package com.jzt.ssm.utils;
import java.io.Serializable;
import java.util.List;
import com.jzt.ssm.po.TBlogtype;
/**
*
* @ClassName: EasyUIDataGridResult
*
* @author 蒋政涛
* @date 2018-10-20
*
*/
public class EasyUIDataGridResult implements Serializable {
private long total;
private List<TBlogtype> rows;
public long getTotal() {
return total;
}
public void setTotal(long total) {
this.total = total;
}
public List<TBlogtype> getRows() {
return rows;
}
public void setRows(List<TBlogtype> rows) {
this.rows = rows;
}
public EasyUIDataGridResult(){
}
}
mybatis的全局配置文件:
注: 针对的是PageHelper4.x版本,新的5.x版本不一样,具体参考这篇博客:Mybatis分页插件PageHelper
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<!-- 全局setting配置,根据需要添加 -->
<!-- 配置别名 -->
<typeAliases>
<!-- 批量扫描别名 -->
<package name="com.jzt.ssm.po"/>
</typeAliases>
<!-- 配置mapper
由于使用spring和mybatis的整合包进行mapper扫描,这里不需要配置了。
必须遵循:mapper.xml和mapper.java文件同名且在一个目录
-->
<!-- 配置分页插件 -->
<plugins>
<!-- com.github.pagehelper为PageHelper类所在包名 -->
<plugin interceptor="com.github.pagehelper.PageHelper">
<property name="dialect" value="mysql"/>
<!-- 该参数默认为false -->
<!-- 设置为true时,会将RowBounds第一个参数offset当成pageNum页码使用 --> <!-- 和startPage中的pageNum效果一样-->
<property name="offsetAsPageNum" value="false"/>
<!-- 该参数默认为false --> <!-- 设置为true时,使用RowBounds分页会进行count查询 -->
<property name="rowBoundsWithCount" value="false"/>
<!-- 设置为true时,如果pageSize=0或者RowBounds.limit = 0就会查询出全部的结果 -->
<!-- (相当于没有执行分页查询,但是返回结果仍然是Page类型)-->
<property name="pageSizeZero" value="true"/>
<!-- 3.3.0版本可用 - 分页参数合理化,默认false禁用 -->
<!-- 启用合理化时,如果pageNum<1会查询第一页,如果pageNum>pages会查询最后一页 -->
<!-- 禁用合理化时,如果pageNum<1或pageNum>pages会返回空数据 -->
<property name="reasonable" value="true"/>
<!-- 3.5.0版本可用 - 为了支持startPage(Object params)方法 -->
<!-- 增加了一个`params`参数来配置参数映射,用于从Map或ServletRequest中取值 -->
<!-- 可以配置pageNum,pageSize,count,pageSizeZero,reasonable,不配置映射的用默认值 -->
<!--<property name="params" value="pageNum=start;pageSize=limit;pageSizeZero=zero;reasonable=heli;count=contsql"/>-->
</plugin>
</plugins>
<!-- <mappers>
</mappers> -->
</configuration>
执行查询
listByPage.java
public EasyUIDataGridResult listByPage(int page, int rows) {
//设置查询 第几页page 每页记录数rows
PageHelper.startPage(page, rows);
TBlogtypeExample example = new TBlogtypeExample();
//没有设置表示无条件,查询对应页数所有的记录.
List<TBlogtype> list = tBlogtypeMapper.selectByExample(example);
PageInfo<TBlogtype> pageInfo = new PageInfo<TBlogtype>(list);
//表的总记录数
long total = pageInfo.getTotal();
EasyUIDataGridResult result = new EasyUIDataGridResult();
result.setTotal(total);
result.setRows(list);
return result;
}
设置参数pageNum = 3,pageSize = 2, 当查询第三页时,list.size() = 2,total=6
当前端传来参数page = 3, rows=2,返回如下结果: