1. 引入分页插件
在 pom.xml 中添加如下依赖:
com.github.pagehelper
pagehelper
5.1.10
2. 配置拦截器插件
特别注意,新版拦截器是 com.github.pagehelper.PageInterceptor。 com.github.pagehelper.PageHelper 现在是一个特殊的 dialect 实现类,是分页插件的默认实现类,提供了和以前相同的用法。
俩种配置方式任选其一
1). 在 MyBatis 配置 xml 中配置拦截器插件
2). 在 Spring 配置文件中配置拦截器插件
使用 spring 的属性配置方式,可以使用 plugins 属性像下面这样配置:
params=value1
3. 分页插件参数介绍
1)helperDialect:分页插件会自动检测当前的数据库链接,自动选择合适的分页方式。 你可以配置helperDialect属性来指定分页插件使用哪种方言。配置时,可以使用下面的缩写值:
oracle,mysql,mariadb,sqlite,hsqldb,postgresql,db2,sqlserver,informix,h2,sqlserver2012,derby
特别注意:使用 SqlServer2012 数据库时,需要手动指定为 sqlserver2012,否则会使用 SqlServer2005 的方式进行分页。
你也可以实现 AbstractHelperDialect,然后配置该属性为实现类的全限定名称即可使用自定义的实现方法。
2)reasonable:分页合理化参数,默认值为false。当该参数设置为 true 时,pageNum<=0 时会查询第一页, pageNum>pages(超过总数时),会查询最后一页。默认false 时,直接根据参数进行查询。
其他参数见官方文档
4. 如何在代码中使用
controller:
@Controller
@RequestMapping(value = "${frontPath}")
public class Test_Controller {
@Autowired
lyhService lyhService;
@RequestMapping("/host")
public ModelAndView goHost(){
return new ModelAndView("zhinengkefu/hostPage");
}
@RequestMapping("/listAllArticle")
public ModelAndView listAllArticle(@RequestParam(value = "pageNo",defaultValue = "1")Integer pageNo){
ModelAndView modelAndView = new ModelAndView("zhinengkefu/artList");
//在你需要进行分页的 MyBatis 查询方法前调用 PageHelper.startPage 静态方法即可,紧跟在这个方法后的第一个MyBatis 查询方法会被进行分页。
PageHelper.startPage(pageNo , 2);
List
使用PageInfo的用法:
//获取第1页,10条内容,默认查询总数count
PageHelper.startPage(1, 10);
List list = countryMapper.selectAll();
//用PageInfo对结果进行包装
PageInfo page = new PageInfo(list);
//测试PageInfo全部属性
//PageInfo包含了非常全面的分页属性
assertEquals(1, page.getPageNum());
assertEquals(10, page.getPageSize());
assertEquals(1, page.getStartRow());
assertEquals(10, page.getEndRow());
assertEquals(183, page.getTotal());
assertEquals(19, page.getPages());
assertEquals(1, page.getFirstPage());
assertEquals(8, page.getLastPage());
assertEquals(true, page.isFirstPage());
assertEquals(false, page.isLastPage());
assertEquals(false, page.isHasPreviousPage());
assertEquals(true, page.isHasNextPage());
我这里为了直观 把所有的属性基本上都使用了 这些事内置类中的属性 直接调用即可 是不是很方便
公告
${art.title}
当前 ${articleList.pageNum }页,总${articleList.pages}页,总 ${articleList.total}条记录
首页
上一页
下一页
末页