Ver código fonte

mybatis-拦截器分页查询-PageHelper分页插件

WanJL 3 dias atrás
pai
commit
7c0293c5f3

+ 6 - 0
mybatisDemo/pom.xml

@@ -42,6 +42,12 @@
             <version>4.12</version>
             <scope>test</scope>
         </dependency>
+        <!-- PageHelper依赖坐标 -->
+        <dependency>
+            <groupId>com.github.pagehelper</groupId>
+            <artifactId>pagehelper</artifactId>
+            <version>5.3.0</version>
+        </dependency>
     </dependencies>
 
 </project>

+ 6 - 1
mybatisDemo/src/main/resources/mybatis-config.xml

@@ -23,6 +23,11 @@
         <package name="com.sf.entity"/>
     </typeAliases>
 
+    <!--配置mybatis的分页插件pageHelper-->
+    <plugins>
+        <!--配置分页插件-->
+        <plugin interceptor="com.github.pagehelper.PageInterceptor" />
+    </plugins>
     <!--配置数据库环境的标签-->
     <!--可以通过切换default的值改变数据库配置-->
     <environments default="d01">
@@ -35,7 +40,7 @@
                 <!--数据库驱动器-->
                 <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
                 <!--数据库地址-->
-                <property name="url" value="jdbc:mysql://localhost:3306/db04"/>
+                <property name="url" value="jdbc:mysql://localhost:3306/db01"/>
                 <!--用户名-->
                 <property name="username" value="root"/>
                 <!--密码-->

+ 17 - 0
mybatisDemo/src/test/java/com/sf/mapperTest/ProductMapperTest.java

@@ -34,3 +34,20 @@ public class ProductMapperTest {
         }
     }
 }
+
+/*
+    分页查询
+
+    逻辑分页
+        先把MySQL里的数据全部查询出来,然后在后端根据条件进行查询部分数据,实现分页。
+    物理分页
+        使用limit进行分页
+        使用分页插件进行分页
+            interceptor拦截器实现分页--PageHelper分页插件
+
+
+
+
+
+ */
+

+ 35 - 0
mybatisDemo/src/test/java/com/sf/mapperTest/TeaMapperTest.java

@@ -1,6 +1,8 @@
 package com.sf.mapperTest;
 
 
+import com.github.pagehelper.PageHelper;
+import com.github.pagehelper.PageInfo;
 import com.sf.entity.Tea;
 import com.sf.mapper.TeaMapper;
 import com.sf.util.SqlSessionFactoryUtils;
@@ -13,6 +15,7 @@ import org.junit.Test;
 import java.io.IOException;
 import java.io.InputStream;
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.List;
 
 /**
@@ -85,4 +88,36 @@ public class TeaMapperTest {
         teaList.forEach(System.out::println);
     }
 
+    @Test
+    public void testSelectAllByPage(){
+        //获取Sql会话
+        SqlSession session = SqlSessionFactoryUtils.getSqlSession(true);
+        TeaMapper teaMapper = session.getMapper(TeaMapper.class);
+        //设置分页参数
+        PageHelper.startPage(3,10);
+        List<Tea> teaList = teaMapper.selectAll();
+        for (Tea tea : teaList) {
+            System.out.println(tea);
+        }
+
+        //PageHelper提供了一个专门用来存分页信息的对象PageInfo
+        PageInfo<Tea> pageInfo = new PageInfo<>(teaList);
+        System.out.println("当前页的页码:"+pageInfo.getPageNum());
+        System.out.println("每页的数量:"+pageInfo.getPageSize());
+        System.out.println("当前页的数量:"+pageInfo.getSize());
+        System.out.println("当前页面第一个元素在数据库中的行号:"+pageInfo.getStartRow());
+        System.out.println("当前页面最后一个元素在数据库中的行号:"+pageInfo.getEndRow());
+        System.out.println("总记录数:"+pageInfo.getTotal());
+        System.out.println("总页数:"+pageInfo.getPages());
+        System.out.println("上一页(页面链接使用):"+pageInfo.getPrePage());
+        System.out.println("下一页(页面链接使用):"+pageInfo.getNextPage());
+        System.out.println("是否为第一页:"+pageInfo.isIsFirstPage());
+        System.out.println("是否为最后一页:"+pageInfo.isIsLastPage());
+        System.out.println("是否有前一页:"+pageInfo.isHasPreviousPage());
+        System.out.println("是否有下一页:"+pageInfo.isHasNextPage());
+        System.out.println("导航页码数(就是总共有多少页):"+pageInfo.getNavigatePages());
+        System.out.println("所有导航页号(就是总共有多少页),可以用来遍历:"+ Arrays.toString(pageInfo.getNavigatepageNums()));
+        System.out.println("导航条上的第一页:"+pageInfo.getNavigateFirstPage());
+        System.out.println("导航条上的最后一页:"+pageInfo.getNavigateLastPage());
+    }
 }