通过pagehelper插件设置分页

1 导入jar包
2 在sqlsessionfactory配置文件中添加pagehelper
3 在具体的sql查询语句执行前加入

Pagehelper.startPage(page,size);

其中page是页数(第几页),size是每页条目数
4 controller层把得到的数据集合装到pageinfo对象中
5 在页面显示

在maven中添加,自动下载

<dependency>
			<groupId>com.github.pagehelper</groupId>
			<artifactId>pagehelper-spring-boot-starter</artifactId>
			<version>1.2.3</version>
		</dependency>

SqlSessionFactory中添加pagehelper

<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
       ......
        <property name="plugins">
            <array>
                <bean class="com.github.pagehelper.PageInterceptor">
                    <property name="properties">
                        <props>
                            <prop key="helperDialect">mysql</prop>
                            <prop key="reasonable">true</prop>
                        </props>
                    </property>
                </bean>
            </array>
        </property>

    </bean>

### MyBatis PageHelper 插件分页功能实现方法 #### 配置插件 为了在项目中使用 `PageHelper` 插件,首先需要在 `mybatis-config.xml` 文件中配置该插件。具体做法是在 `<plugins>` 节点下添加一个拦截器节点 `<plugin>` 并指定其类名为 `com.github.pagehelper.PageInterceptor`[^3]。 以下是配置示例: ```xml <configuration> ... <plugins> <!-- 添加 PageHelper 插件 --> <plugin interceptor="com.github.pagehelper.PageInterceptor"> <property name="helperDialect" value="mysql"/> <property name="offsetAsPageNum" value="false"/> <property name="rowBoundsWithCount" value="true"/> <property name="pageSizeZero" value="true"/> </plugin> </plugins> </configuration> ``` #### 启动分页 在执行查询之前,可以通过调用 `PageHelper.startPage()` 方法来启动分页功能。此方法接受两个参数:`pageNum` 和 `pageSize`,分别表示当前页码和每页显示的记录数[^1]。 以下是一个典型的分页初始化代码片段: ```java // 设置分页参数 PageHelper.startPage(pageNum, pageSize); ``` 如果需要更高级的功能(如排序),可以传递额外的参数给 `startPage` 方法[^4]。例如: ```java // 带有排序字段的分页设置 PageHelper.startPage(pageNum, pageSize, "id desc"); ``` #### 执行查询 完成分页设置后,可以直接调用 Mapper 接口中的查询方法获取数据列表。此时返回的结果会自动按照设定的分页条件进行过滤[^5]。 下面是一段完整的查询逻辑代码示例: ```java @RequestMapping(value = "/allSals/{salsType}/{pageNum}", method = RequestMethod.GET) @ResponseBody public PageInfo<SalsAddressInfo> allSals( HttpServletRequest request, @PathVariable("salsType") String salsType, @PathVariable("pageNum") int pageNum, HttpServletResponse response) throws IOException { // 构建查询参数 Map<String, Object> params = new HashMap<>(); params.put("salsType", salsType); // 开启分页 PageHelper.startPage(pageNum, 30); // 查询数据 List<SalsAddressInfo> infos = salsAddressInfoMapper.allsalas(params); // 将结果封装到 PageInfo 对象中 PageInfo<SalsAddressInfo> pageInfo = new PageInfo<>(infos); return pageInfo; } ``` 在此过程中,`PageHelper` 自动计算总记录数以及分页后的子集,并将其存储在线程局部变量中以便后续访问[^4]。 --- #### 注意事项 - **线程安全**:由于 `PageHelper` 的分页状态保存在线程本地变量中,因此它是线程安全的。 - **性能优化**:对于大数据量场景,合理调整 `pageSize` 参数可有效减少内存占用。 - **兼容性**:确保所使用的数据库方言已正确配置于 `helperDialect` 属性中[^3]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值