官网:https://pagehelper.github.io/前端
PageHelper是一个Mybatis的分页插件, 负责将已经写好的sql语句, 进行分页加工。官网说法:若是你也在用 MyBatis,建议尝试该分页插件,这必定是最方便使用的分页插件。分页插件支持任何复杂的单表、多表分页。java
优势:无需你本身去封装以及关心sql分页等问题,使用很方便,前端取数据也很方便。mysql
<!--MyBatis的PageHelper插件--> <dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper</artifactId> <version>5.0.3</version> </dependency>
若是是单独的MyBatis框架,须要在SqlMapConfig.xml添加分页插件的配置git
<!-- plugins在配置文件中的位置必须符合要求,不然会报错,顺序以下: properties?, settings?, typeAliases?, typeHandlers?, objectFactory?,objectWrapperFactory?, plugins?, environments?, databaseIdProvider?, mappers? --> <plugins> <!-- com.github.pagehelper为PageHelper类所在包名 --> <plugin interceptor="com.github.pagehelper.PageInterceptor"> <!--数据库方言--> <property name="helperDialect" value="mysql"/> <!--合理化分页--> <property name="reasonable" value="true"/> </plugin> </plugins>
必须注意配置的顺序,顺序出错,会执行报错!github
这里PageHelper有一些参数能够设置,具体能够查看官网文档。spring
若是是MyBatis与Spring整合,须要修改Spring的applicationContext.xmlsql
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <!-- 注意:这里还有其余Spring相关配置 --> <property name="plugins"> <array> <bean class="com.github.pagehelper.PageInterceptor"> <property name="properties"> <value> helperDialect=mysql reasonable=true </value> </property> </bean> </array> </property> </bean>
package com.yiidian.dao; import com.yiidian.domain.Customer; import java.util.List; /** * Dao接口 *一点教程网 - www.yiidian.com */ public interface CustomerDao { /** * 查询全部用户 */ public List<Customer> findAll(); }
这里只须要定义普通查询的方法便可,无需为分页另外定义特殊的方法。数据库
package com.yiidian.mybatis; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import com.yiidian.dao.CustomerDao; import com.yiidian.domain.Customer; import com.yiidian.utils.MyBatisUtils; import org.apache.ibatis.io.Resources; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; import org.apache.ibatis.session.SqlSessionFactoryBuilder; import org.junit.Test; import java.io.IOException; import java.io.InputStream; import java.util.List; /** * MyBatis测试类 - PageHelper分页插件的使用 * 一点教程网 - www.yiidian.com */ public class TestCustomerDao { @Test public void test1(){ //1.获取SqlSession对象 SqlSession sqlSession = MyBatisUtils.getSession(); //2.生成Dao代理对象 CustomerDao customerDao = sqlSession.getMapper(CustomerDao.class); //3.设置分页参数 int pageNun = 1; // 页码 int pageSize = 2;// 每页显示条数 PageHelper.startPage(pageNun,pageSize); //4. 查询用户数据 List<Customer> list = customerDao.findAll(); //5.把用户数据封装到PageInfo分页结果对象 PageInfo<Customer> page = new PageInfo<>(list); //6.取出PageInfo的属性 //测试PageInfo所有属性 //PageInfo包含了很是全面的分页属性 System.out.println("当前页码="+page.getPageNum()); System.out.println("每页显示条数="+page.getPageSize()); System.out.println("当前页起始行号="+page.getStartRow()); System.out.println("当前页结束行号="+page.getEndRow()); System.out.println("总记录数="+page.getTotal()); System.out.println("总页数="+page.getPages()); System.out.println("是否为第1页="+page.isIsFirstPage()); System.out.println("是否为最后1页="+page.isIsLastPage()); System.out.println("是否有上一页="+page.isHasPreviousPage()); System.out.println("是否有下一页="+page.isHasNextPage()); System.out.println("当前页数据="); for(Customer c:page.getList()){ System.out.println(c); } //7.关闭链接 sqlSession.close(); } }
PageHelper把全部分页结果数据封装到PageInfo对象,下面是打印出经常使用的属性apache
源码下载:https://pan.baidu.com/s/1_B6DfcpXPiRxBiVuxxlRPQsession
欢迎关注个人公众号::一点教程。得到独家整理的学习资源和平常干货推送。 若是您对个人系列教程感兴趣,也能够关注个人网站:yiidian.com