PageHelper
实现步骤:
<dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper</artifactId> <version>5.1.10</version> </dependency>
在<environments>之前加入 <plugins> <plugin interceptor="com.github.pagehelper.PageInterceptor" /> </plugins>
查询语句之前调用 PageHelper.startPage 静态方法。
除了 PageHelper.startPage 方法外,还提供了类似用法的 PageHelper.offsetPage 方法。
在你需要进行分页的 MyBatis 查询方法前调用 PageHelper.startPage 静态方法即可,紧跟在这个方法后的第一个 MyBatis 查询方法会被进行分页。
@Test public void testSelect() throws IOException { //获取第 1 页,3 条内容 PageHelper.startPage(1,3); List<Student> studentList = studentDao.selectStudents(); studentList.forEach( stu -> System.out.println(stu)); }
接口方法:
List<Student> selectAllStudents();
mapper文件:
<select id="selectAllStudents" resultType="com.lln.vo.Student"> select * from student order by id </select>
测试类:
@Test public void testSelectAllStudents(){ //1.获取SqlSession SqlSession session = MyBatisUtil.getSqlSession(); //2.获取dao的代理 StudentDao dao = session.getMapper(StudentDao.class); //调用PageHelper的方法 PageHelper.startPage(1,3); List<Student> students = dao.selectAllStudents(); students.forEach(stu -> System.out.println("stu = "+stu)); //3.关闭SqlSession对象 session.close(); }
运行结果:
Logging initialized using 'class org.apache.ibatis.logging.stdout.StdOutImpl' adapter. PooledDataSource forcefully closed/removed all connections. PooledDataSource forcefully closed/removed all connections. PooledDataSource forcefully closed/removed all connections. PooledDataSource forcefully closed/removed all connections. Created connection 209833425. Returned connection 209833425 to pool. Cache Hit Ratio [SQL_CACHE]: 0.0 Opening JDBC Connection Checked out connection 209833425 from pool. Setting autocommit to false on JDBC Connection [com.mysql.jdbc.JDBC4Connection@c81cdd1] ==> Preparing: SELECT count(0) FROM student ==> Parameters: <== Columns: count(0) <== Row: 7 <== Total: 1 ==> Preparing: select * from student order by id LIMIT ? ==> Parameters: 3(Integer) <== Columns: id, name, email, age <== Row: 1, 张三, 123@163.com, 18 <== Row: 2, 李四, 456@163.com, 26 <== Row: 3, 王五, 789@163.com, 30 <== Total: 3 stu = Student实体:{id=1, name='张三', email='123@163.com', age=18} stu = Student实体:{id=2, name='李四', email='456@163.com', age=26} stu = Student实体:{id=3, name='王五', email='789@163.com', age=30} Resetting autocommit to true on JDBC Connection [com.mysql.jdbc.JDBC4Connection@c81cdd1] Closing JDBC Connection [com.mysql.jdbc.JDBC4Connection@c81cdd1] Returned connection 209833425 to pool.