关于分页 使用pageNum还是offset的问题

原地址:http://ask.csdn.net/questions/655742

关于分页中是使用偏移量,还是使用页码的问题
以下纯属个人观点:
对比两种传值方式的比较
使用页码 
pageNum 页码 pageCount 每页的数据个数
前端首先需要有一个 pageNum 的临时变量
在翻页的时候 pageNum++
服务端接口中,根据pageNum和pageCount 计算得到 offset(offset = (pageSize-1)*pageCount)
使用偏移量
offset 即为 当前页中数据集合的长度,对应的java中 list.size()
count 每页的数据个数
服务端不需要任何处理

个人观点 
优缺点
缺点:前者 客户端需要维护下页面的变量,后段需要对这个参数进行计算
缺点:后者 客户端每次翻页需要点用list.size 计算长度,性能上会有影响。

从程序员的角度我更倾向于使用后者,因为它很程序员。

举个例子
比如说获取用户列表
http://lll.ooo.nm/user?offset=0&count=10 第一页数据
http://lll.ooo.nm/user?pageNum=1&pageCount=10 第一页数据

在MyBatis框架中实现分页查询通常需要借助其提供的分页插件,比如PageHelper或者Mybatis-Plus等。下面是基本的使用流程: 1. 添加分页插件依赖: 首先,你需要在项目的pom.xml文件中添加对应的分页插件依赖。例如,如果你选择的是PageHelper,可以在maven仓库找到它并添加到dependencies部分。 ```xml <dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper</artifactId> <!-- 版本号 --> <version>5.x.x</version> </dependency> ``` 2. 配置插件: 在应用启动配置文件(如Spring Boot的application.properties或yml),或者直接在MyBatis的配置文件(sqlMapConfig.xml或mybatis-config.xml)中,设置分页插件的相关属性。比如设置默认的Dialect(数据库方言)、页面大小等。 ```properties # Spring Boot示例 spring.datasource.type=com.alibaba.druid.DruidDataSource pagehelper.helperDialect=mysql # MyBatis XML配置示例 <plugins> <plugin interceptor="com.github.pagehelper.PageInterceptor"> <property name="reasonable" value="true" /> <!-- 是否开启合理化分页 --> <property name="supportMethodsArguments" value="true" /> <!-- 支持动态SQL参数 --> <property name="params" value="offset,limit" /> <!-- 查询参数名称 --> </plugin> </plugins> ``` 3. 使用分页查询: 在你的Mapper接口方法中,使用分页插件提供的方法进行分页查询。例如,在一个List<User>类型的查询中加上分页参数: ```java @Select("SELECT * FROM user LIMIT #{offset}, #{limit}") List<User> getUserList(@Param("offset") int offset, @Param("limit") int limit); ``` 4. 调用查询: 在Service层或者Controller层,你可以通过注入Mapper,并传入自定义的起始位置(offset)和每页数量(limit)来获取分页结果: ```java PageHelper.startPage(pageNum, pageSize); // 分页开始位置,每页数量 List<User> userList = userMapper.getUserList(pageNum, pageSize); ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值