news 2026/8/29 3:30:10

在Mybatis中PageHelper 的分页作用只对 startPage() 之后、且在同一个线程中执行的「下一个 MyBatis 查询方法」生效

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
在Mybatis中PageHelper 的分页作用只对 startPage() 之后、且在同一个线程中执行的「下一个 MyBatis 查询方法」生效

在测试分页插件的查询功能时,我发现:

@Test public void testPageHelperTest() { try { InputStream resourceAsStream = Resources.getResourceAsStream("mybatis-config.xml"); SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream); SqlSession sqlSession = sqlSessionFactory.openSession(true); UserMapper mapper = sqlSession.getMapper(UserMapper.class); Page<Object> pages = PageHelper.startPage(2, 5); System.out.println(pages); } catch (IOException e) { throw new RuntimeException(e); } } }

以上代码输出:

Page{count=true, pageNum=2, pageSize=5, startRow=5, endRow=10, total=0, pages=0, reasonable=null, pageSizeZero=null}[]

我就不明白为什么这里会什么数据都没有

@Test public void testPageHelperTest() { try { InputStream resourceAsStream = Resources.getResourceAsStream("mybatis-config.xml"); SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream); SqlSession sqlSession = sqlSessionFactory.openSession(true); UserMapper mapper = sqlSession.getMapper(UserMapper.class); Page<Object> pages = PageHelper.startPage(2, 5); List<User> users = mapper.selectByExample(null); System.out.println(pages); } catch (IOException e) { throw new RuntimeException(e); } } }

以上代码输出:
Page{count=true, pageNum=2, pageSize=5, startRow=5, endRow=10, total=15, pages=3, reasonable=false, pageSizeZero=false}[User{id=13, name=‘张三’, age=23, sex=‘男’, email=‘123@qq.com’, password=‘123456’, departmentid=2}, User{id=14, name=‘张三’, age=21, sex=‘男’, email=‘222@qq.com’, password=‘123456’, departmentid=3}, User{id=15, name=‘张三’, age=23, sex=‘男’, email=‘123@qq.com’, password=‘123456’, departmentid=1}, User{id=16, name=‘张三’, age=23, sex=‘男’, email=‘123@qq.com’, password=‘123456’, departmentid=2}, User{id=17, name=‘张三’, age=21, sex=‘男’, email=‘222@qq.com’, password=‘123456’, departmentid=3}]

我发现:要有

List<User> users = mapper.selectByExample(null);

才能正常输出pages的内容

List<User> users = mapper.selectByExample(null);

必须在

Page<Object> pages = PageHelper.startPage(2, 5);

后面才可以正确输出内容,如果

List<User> users = mapper.selectByExample(null);

Page<Object> pages = PageHelper.startPage(2, 5);

前面,任然会输出:

Page{count=true, pageNum=2, pageSize=5, startRow=5, endRow=10, total=0, pages=0, reasonable=null, pageSizeZero=null}[]

这是因为:

PageHelper 的分页作用只对startPage()之后、且在同一个线程中执行的「下一个 MyBatis 查询方法」生效

  1. PageHelper.startPage(...)必须写在查询语句之前
  2. 中间不能有其他 MyBatis 查询(尤其是会触发 SQL 执行的操作)
  3. 也不能在startPage()之前调用查询——因为那时 PageHelper 还未设置分页上下文
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/27 21:17:15

AI智能实体侦测服务前端集成:JavaScript调用WebUI组件方法

AI智能实体侦测服务前端集成&#xff1a;JavaScript调用WebUI组件方法 1. 背景与技术价值 在信息爆炸的时代&#xff0c;非结构化文本数据&#xff08;如新闻、社交媒体内容、文档资料&#xff09;呈指数级增长。如何从中快速提取关键信息&#xff0c;成为提升信息处理效率的…

作者头像 李华
网站建设 2026/8/28 5:51:01

AI智能实体侦测服务显存优化技巧:CPU推理提速实战指南

AI智能实体侦测服务显存优化技巧&#xff1a;CPU推理提速实战指南 1. 背景与挑战&#xff1a;AI智能实体侦测服务的性能瓶颈 随着自然语言处理&#xff08;NLP&#xff09;技术在信息抽取、知识图谱构建和内容审核等场景中的广泛应用&#xff0c;命名实体识别&#xff08;Nam…

作者头像 李华
网站建设 2026/8/24 14:27:26

疾控中心供配电系统设计(源码+万字报告+讲解)(支持资料、图片参考_相关定制)

疾控中心供配电系统设计 摘 要 本文旨在研究和设计一种适用于疾病控制中心的供配电系统。本研究的背景是&#xff0c;疾控中心是公共卫生系统的重要组成部分&#xff0c;其供电的稳定性和可靠性直接关系到疫情防控、疾病监测和科研实验等关键任务的顺利进行。因此&#xff0c;设…

作者头像 李华
网站建设 2026/8/22 0:09:18

RaNER模型领域适配:医疗术语识别微调实战案例

RaNER模型领域适配&#xff1a;医疗术语识别微调实战案例 1. 引言&#xff1a;从通用实体识别到垂直领域挑战 随着自然语言处理技术的快速发展&#xff0c;命名实体识别&#xff08;Named Entity Recognition, NER&#xff09;已成为信息抽取、知识图谱构建和智能搜索等应用的…

作者头像 李华
网站建设 2026/8/19 17:24:09

混元翻译模型1.5:上下文感知翻译实现原理

混元翻译模型1.5&#xff1a;上下文感知翻译实现原理 1. 引言&#xff1a;混元翻译模型的演进与行业需求 随着全球化进程加速&#xff0c;跨语言交流已成为企业、开发者乃至个人用户的刚需。传统翻译模型在面对多语言混合、专业术语密集或上下文依赖强的场景时&#xff0c;往…

作者头像 李华