临夏建设网站,网站建设要考虑的问题,叶涛网站推广优化,玉溪建设网站引言:PageHelper是国内非常优秀的一款开源的mybatis分页插件#xff0c;它支持基本主流与常用的数据库#xff0c; 例如mysql、 oracle、mariaDB、 DB2、 SQLite、Hsqldb等。今天墨白就给大家聊聊PageHelper这款分页插件,下面是PageHelper开源地址,感兴趣的小伙伴可以去看一下…引言:PageHelper是国内非常优秀的一款开源的mybatis分页插件它支持基本主流与常用的数据库 例如mysql、 oracle、mariaDB、 DB2、 SQLite、Hsqldb等。今天墨白就给大家聊聊PageHelper这款分页插件,下面是PageHelper开源地址,感兴趣的小伙伴可以去看一下PageHelper在 github 的项目地址1https://github.com/pagehelper/Mybatis-PageHelperPageHelper在 gitosc 的项目地址1 http://git.oschina.net/free/Mybatis_PageHelper先介绍一下这款插件PageHelper官网地址1https://pagehelper.github.io/访问官网后的页面,官网里面有详细的Demo,今天我们来照着官网自己动手敲个Demo;如何使用PageHelper?1.在自己的项目添加依赖,maven项目在父工程添加最新版本,最新版本是5.1.812 com.github.pagehelper3 pagehelper4 5.1.852.在数据访问层Spring 配置文件中配置拦截器插件,代码如下12 3 4 5 6 7 8 9 helperDialectmysql10 reasonabletrue11 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 时pageNum0 时会查询第一页 pageNumpages(超过总数时)会查询最后一页。默认false 时直接根据参数进行查询。4.在代码中使用的两种方式:第一种1// 此语句后的第一个select查询自动会被分页2PageHelper.startPage(1, 10);3// 这里的查询会自动分页4List list countryMapper.selectIf(1);第二种1//获取第1页10条内容默认查询总数count2PageHelper.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}4Service接口1public interface CompanyService {2 // 分页查询3 PageInfo findByPage(int pageNum, int PageSize);4 //查询所有5 List findAll();6}impl实现1 // 注入Mapper2 Autowired3 private CompanyMapper companyMapper;45Override6public 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}单元测试1RunWith(SpringJUnit4ClassRunner.class)2ContextConfiguration(classpath*:spring/applicationContext-*.xml)3public class UserServiceImplTest {4 // 注入service5 Autowired6 private CompanyService companyMapper;78 Test9 public void findByPage(){10 PageInfo pageInfo companyMapper.findByPage(1, 2);11 System.out.println(pageInfo);12 }13}测试结果:控制器:每个人的Controller都不一样,我这里给个模板你们,不明白的可以在后台留言,或者是在群里提问,仅作参考:1 Autowired2 private CompanyService companyService;34 RequestMapping(/***)5 public ModelAndView findByPage(6 RequestParam(defaultValue 1) int pageNum,7 RequestParam(defaultValue 5) int pageSize) {89 ModelAndView mv new ModelAndView();10 mv.addObject(pageInfo,pageInfo);11 mv.setViewName(详情列表);12 return mv;13 }14}今天的内容就到这里了,加油明天见本文由公众号【框架师 IDmohu121】首发转载请注明出处