pageHelper分页插件使用
1.摘要pageHelper:
com.github.pagehelper.PageHelper是一款好用的开源免费的Mybatis第三方物理分页插件。
PageHelper是一款好用的开源免费的Mybatis第三方物理分页插件,其实我并不想加上好用两个字,但是为了表扬插件作者开源免费的崇高精神,我毫不犹豫的加上了好用一词作为赞美。
原本以为分页插件,应该是很简单的,然而PageHelper比我想象的要复杂许多,它做的很强大,也很彻底,强大到使用者可能并不需要这么多功能,彻底到一参可以两用。但是,我认为,作为分页插件,完成物理分页任务是根本,其它的很多智能并不是必要的,保持它够傻够憨,专业术语叫stupid,简单就是美。
官方网址:https://pagehelper.github.io/
2.下面我们就是使用的方法了
2.1引入依赖
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>4.1.0</version>
</dependency>
2.2增加配置文件
在你的配置文件的包(随便什么包都行) 新建MyBatisConfig 类
@Configuration
public class MyBatisConfig {
@Bean
public PageHelper pageHelper(){
PageHelper pageHelper = new PageHelper();
Properties p = new Properties();
/**
*设置为true时,会将RowBounds第一个参数offset当成pageNum页码使用
*/
p.setProperty("offsetAsPageNum","true");
/**
*设置为true时,使用RowBounds分页会进行count查询
*/
p.setProperty("rowBoundsWithCount","true");
p.setProperty("reasonable","true");
pageHelper.setProperties(p);
return pageHelper;
}
}
2.3包装类
在你查询全部信息方法前,例如我
方法前添加这个包装类
PageHelper.startPage(page, size);
//我的示例
/**
* 分页接口
*
* @param page 当前第几页,默认第一页
* @param size 每页显示几条
*/
@GetMapping("page")
public Object TestGetVideoALl(@RequestParam(value = "page", defaultValue = "1") int page,
@RequestParam(value = "size", defaultValue = "10") int size) {
PageHelper.startPage(page, size);
List<Video> list = videoService.GetVideoAll();
PageInfo<Video> pageInfo = new PageInfo<>(list);
Map<String, Object> data = new HashMap<>();
data.put("total_size",pageInfo.getTotal());//总条数
data.put("tatal_page",pageInfo.getPages());//总页数
data.put("current_page",page);//当前页
data.put("data",pageInfo.getList());//数据
return data;
}
2.4基本原理
sqlsessionFactory -> sqlSession-> executor -> mybatis sql statement
通过mybatis plugin 增加拦截器,然后拼装分页 org.apache.ibatis.plugin.Interceptor
所以我们想做分页就很简单了很多,避开了很繁琐的代码