登录
首页 >  数据库 >  MySQL

MySQL + MyBatis-Plus 分页数据重复问题

来源:SegmentFault

时间:2023-01-20 15:22:48 325浏览 收藏

亲爱的编程学习爱好者,如果你点开了这篇文章,说明你对《MySQL + MyBatis-Plus 分页数据重复问题》很感兴趣。本篇文章就来给大家详细解析一下,主要介绍一下MySQL、Java、mybatis-plus、pagehelper,希望所有认真读完的童鞋们,都有实质性的提高。

问题

有一个分页查询用户的接口,本来已经通过测试并且上线运行了。突然在测试环境报BUG,每一页有不同程度的数据重复,例如,第一页有张三,第三页又出现张三了。

主要的代码如下:

PageMethod.startPage(query.getCurrPage(), query.getPageSize());
List users = userMapper.pages(query);
return new PageInfo(users);

第一反应是,可能

//第二种,Mapper接口方式的调用,推荐这种使用方式。
PageHelper.startPage(1, 10);
List list = userMapper.selectIf(1);

那么问题只可能出现在

CREATE TABLE `gov_contract_customer_relation` (
  `id` bigint NOT NULL AUTO_INCREMENT,
  `no` varchar(50) NOT NULL COMMENT '编号',
  `name` varchar(50) NOT NULL COMMENT '姓名',
  `age` int DEFAULT NULL COMMENT '年龄',
  `create_time` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  PRIMARY KEY (`id`) USING BTREE,
  UNIQUE KEY `no_UNI_IDX` (`no`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='用户表';

出现问题的分页

SELECT
    *
FROM t_user
WHERE age > 20
ORDER BY create_time DESC
LIMIT 0, 10;

问题表现为

SELECT
    *
FROM t_user
WHERE age > 20
ORDER BY create_time DESC, no ASC
limit 0, 10;

增加排序字段,避免无法排序字段值全部相同。最好使用有唯一约束的字段作为排序依据。

终于介绍完啦!小伙伴们,这篇关于《MySQL + MyBatis-Plus 分页数据重复问题》的介绍应该让你收获多多了吧!欢迎大家收藏或分享给更多需要学习的朋友吧~golang学习网公众号也会发布数据库相关知识,快来关注吧!

声明:本文转载于:SegmentFault 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>