带你学习最简单的分页插件PageHelper

您所在的位置:网站首页 pagehelper的startpage方法 带你学习最简单的分页插件PageHelper

带你学习最简单的分页插件PageHelper

#带你学习最简单的分页插件PageHelper | 来源: 网络整理| 查看: 265

带你学习最简单的分页插件PageHelper 引言: PageHelper是国内非常优秀的一款开源的mybatis分页插件,它支持基本主流与常用的数据库, 例如mysql、 oracle、mariaDB、 DB2、 SQLite、Hsqldb等。今天墨白就给大家聊聊PageHelper这款分页插件,下面是PageHelper开源地址,感兴趣的小伙伴可以去看一下 PageHelper在 github 的项目地址:

1https://github.com/pagehelper/Mybatis-PageHelper

PageHelper在 gitosc 的项目地址:

1 http://git.oschina.net/free/Mybatis_PageHelper;

先介绍一下这款插件PageHelper 官网地址:

1https://pagehelper.github.io/

访问官网后的页面,官网里面有详细的Demo,今天我们来照着官网自己动手敲个Demo; 带你学习最简单的分页插件PageHelper 如何使用PageHelper? 1.在自己的项目添加依赖,maven项目在父工程添加最新版本,最新版本是5.1.8

1 2 com.github.pagehelper 3 pagehelper 4 5.1.8 5

2.在数据访问层Spring 配置文件中配置拦截器插件,代码如下

1 2 3 4 5 6 7 8 9 helperDialect=mysql 10 reasonable=true 11 12 13 14 15 16

3.PageHelper分页插件参数介绍 这里我只介绍两个常用的,详细的可以去看官网API文档 helperDialect: 分页插件会自动检测当前的数据库链接,自动选择合适的分页方式。 你可以配置helperDialect属性来指定分页插件使用哪种方言。配置时,可以使用下面的缩写值 1oracle,mysql,mariadb,sqlite,hsqldb,postgresql,db2,sqlserver,informix,h2,sqlserver2012,derby 特别注意:使用 SqlServer2012 数据库时,需要手动指定为 sqlserver2012,否则会使用 SqlServer2005 的方式进行分页。你也可以实现 AbstractHelperDialect,然后配置该属性为实现类的全限定名称即可使用自定义的实现方法。 reasonable: 分页合理化参数,默认值为false。当该参数设置为 true 时,pageNumpages(超过总数时),会查询最后一页。默认false 时,直接根据参数进行查询。

4.在代码中使用的两种方式:

第一种

1// 此语句后的第一个select查询自动会被分页 2PageHelper.startPage(1, 10); 3// 这里的查询会自动分页 4List list = countryMapper.selectIf(1);

第二种

1//获取第1页,10条内容,默认查询总数count 2PageHelper.startPage(1, 10); 3List list = countryMapper.selectAll(); 4//用PageInfo对结果进行包装 5PageInfo page = new PageInfo(list); 6//测试PageInfo全部属性 7//PageInfo源码中可以看到包含了非常全面的分页属性 8assertEquals(1, page.getPageNum()); 9assertEquals(10, page.getPageSize()); 10assertEquals(1, page.getStartRow()); 11assertEquals(10, page.getEndRow()); 12assertEquals(183, page.getTotal()); 13assertEquals(19, page.getPages()); 14assertEquals(1, page.getFirstPage()); 15assertEquals(8, page.getLastPage()); 16assertEquals(true, page.isFirstPage()); 17assertEquals(false, page.isLastPage()); 18assertEquals(false, page.isHasPreviousPage()); 19assertEquals(true, page.isHasNextPage());

使用PageHelper 配置好了上面的坐标和Spring配置文件以后,我们直接开始使用PageHelper,,每个人的表数据可能都不一样,大家根据需求自己来玩,代码如下 Mapper接口

1/** 2 * CompanyMapper接口 3*/ 4public interface CompanyMapper { 5 //查询全部 6 List findAll(); 7}

Mapper映射

1 2 3 select * from ss_company where companyId=#{companyId} 4

Service接口

1public interface CompanyService { 2 // 分页查询 3 PageInfo findByPage(int pageNum, int PageSize); 4 //查询所有 5 List findAll(); 6}

impl实现

1 // 注入Mapper 2 @Autowired 3 private CompanyMapper companyMapper; 4 5[@Override](https://my.oschina.net/u/1162528) 6public PageInfo findByPage(int pageNum, int pageSize) { 7 // 开始分页, PageHelper组件会自动对其后的第一条查询查询分页 8 PageHelper.startPage(pageNum,pageSize); 9 // 调用dao查询 10 List list = companyMapper.findAll(); 11 // 创建PageInfo对象封装分页结果,传入查询集合。会自动计算分页参数 12 PageInfo pageInfo = new PageInfo;;(list); 13 return pageInfo; 14}

单元测试

1@RunWith(SpringJUnit4ClassRunner.class) 2@ContextConfiguration("classpath*:spring/applicationContext-*.xml") 3public class UserServiceImplTest { 4 // 注入service 5 @Autowired 6 private CompanyService companyMapper; 7 8 @Test 9 public void findByPage(){ 10 PageInfo pageInfo = companyMapper.findByPage(1, 2); 11 System.out.println(pageInfo); 12 } 13}

测试结果: 带你学习最简单的分页插件PageHelper 控制器:每个人的Controller都不一样,我这里给个模板你们,不明白的可以在后台留言,或者是在群里提问, 仅作参考:

1 @Autowired 2 private CompanyService companyService; 3 4 @RequestMapping("/***") 5 public ModelAndView findByPage( 6 @RequestParam(defaultValue = "1") int pageNum, 7 @RequestParam(defaultValue = "5") int pageSize) { 8 9 ModelAndView mv = new ModelAndView(); 10 mv.addObject("pageInfo",pageInfo); 11 mv.setViewName("详情列表"); 12 return mv; 13 } 14}

今天的内容就到这里了,加油!!!明天见 > 本文由公众号【框架师 ,ID:mohu121】首发,转载请注明出处



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3