1、pom文件
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.1.0</version>
</dependency>
2、类
import com.github.pagehelper.dialect.AbstractHelperDialect;
import com.github.pagehelper.page.PageAutoDialect;
import com.github.pagehelper.page.PageMethod;
import com.github.pagehelper.page.PageParams;
import org.apache.ibatis.cache.CacheKey;
import org.apache.ibatis.mapping.BoundSql;
import org.apache.ibatis.mapping.MappedStatement;
import org.apache.ibatis.session.RowBounds;
import java.util.List;
import java.util.Properties;
/**
-
Mybatis - 通用分页拦截器
-
@author liuzh/abel533/isea533
-
@version 5.0.0
*/
public class PageHelper extends PageMethod implements Dialect {
private PageParams pageParams;
private PageAutoDialect autoDialect;@Override
public boolean skip(MappedStatement ms, Object parameterObject, RowBounds rowBounds) {
Page page = pageParams.getPage(parameterObject, rowBounds);
if (page == null) {
return true;
} else {
autoDialect.initDelegateDialect(ms);
return false;
}
}@Override
public boolean beforeCount(MappedStatement ms, Object parameterObject, RowBounds rowBounds) {
return autoDialect.getDelegate().beforeCount(ms, parameterObject, rowBounds);
}@Override
public String getCountSql(MappedStatement ms, BoundSql boundSql, Object parameterObject, RowBounds rowBounds, CacheKey countKey) {
return autoDialect.getDelegate().getCountSql(ms, boundSql, parameterObject, rowBounds, countKey);
}@Override
public boolean afterCount(long count, Object parameterObject, RowBounds rowBounds) {
return autoDialect.getDelegate().afterCount(count, parameterObject, rowBounds);
}@Override
public Object processParameterObject(MappedStatement ms, Object parameterObject, BoundSql boundSql, CacheKey pageKey) {
return autoDialect.getDelegate().processParameterObject(ms, parameterObject, boundSql, pageKey);
}@Override
public boolean beforePage(MappedStatement ms, Object parameterObject, RowBounds rowBounds) {
return autoDialect.getDelegate().beforePage(ms, parameterObject, rowBounds);
}@Override
public String getPageSql(MappedStatement ms, BoundSql boundSql, Object parameterObject, RowBounds rowBounds, CacheKey pageKey) {
return autoDialect.getDelegate().getPageSql(ms, boundSql, parameterObject, rowBounds, pageKey);
}public String getPageSql(String sql, Page page, RowBounds rowBounds, CacheKey pageKey) {
return autoDialect.getDelegate().getPageSql(sql, page, pageKey);
}@Override
public Object afterPage(List pageList, Object parameterObject, RowBounds rowBounds) {
//这个方法即使不分页也会被执行,所以要判断 null
AbstractHelperDialect delegate = autoDialect.getDelegate();
if(delegate != null){
return delegate.afterPage(pageList, parameterObject, rowBounds);
}
return pageList;
}@Override
public void afterAll() {
//这个方法即使不分页也会被执行,所以要判断 null
AbstractHelperDialect delegate = autoDialect.getDelegate();
if (delegate != null) {
delegate.afterAll();
autoDialect.clearDelegate();
}
clearPage();
}@Override
public void setProperties(Properties properties) {
pageParams = new PageParams();
autoDialect = new PageAutoDialect();
pageParams.setProperties(properties);
autoDialect.setProperties(properties);
}
}
3、使用
controller
@ResponseBody
@RequestMapping(value = “getLogFY”)
public PageInfo getTrainSchemeFY(@RequestParam(defaultValue=“1”) int pageNo, @RequestParam(value = “limit”, defaultValue = “10”) int limit,HttpServletRequest request) {
HashMap<String,Object> conditionMap = new HashMap<String,Object>();
//根据关键字查询
conditionMap.put("keyword",request.getParameter("keyword"));
pageNo = pageNo < 0 || pageNo > WebConst.MAX_PAGE ? 1 : pageNo;
List<SystemLogVo> logLists=systemLogService.getSystemLogs(pageNo, PageSize,conditionMap);
PageInfo<SystemLogVo> pageInfo=new PageInfo<SystemLogVo>(logLists);
return pageInfo;
}
service
@Override
public List getSystemLogs(int page, int limit, HashMap conditionMap) {
if (page <= 0) {
page = 1;
}
if (limit < 1 || limit > WebConst.MAX_POSTS) {
limit = 10;
}
PageHelper.startPage(page, limit);
List dataLogVos = systemLogDao.getSystemLogs(conditionMap);
return dataLogVos;
}