PageHelper分页插件

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> maps = lyhService.listAllArticle();
        PageInfo> mapPageInfo = new PageInfo<>(maps);
        modelAndView.addObject("articleList",mapPageInfo);
        return modelAndView;
    }
}

使用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}条记录

首页 上一页 下一页 末页
微信截图_20190722153627.png

你可能感兴趣的:(PageHelper分页插件)