news 2026/8/26 4:32:15

在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/17 7:46:08

从数据标注到上线:AI智能实体侦测服务生产环境部署全流程

从数据标注到上线&#xff1a;AI智能实体侦测服务生产环境部署全流程 1. 引言&#xff1a;AI 智能实体侦测服务的工程价值 在自然语言处理&#xff08;NLP&#xff09;的实际应用中&#xff0c;命名实体识别&#xff08;Named Entity Recognition, NER&#xff09; 是信息抽取…

作者头像 李华
网站建设 2026/8/19 9:39:00

RaNER模型部署案例:新闻聚合平台实战

RaNER模型部署案例&#xff1a;新闻聚合平台实战 1. 引言&#xff1a;AI 智能实体侦测服务的业务价值 在当今信息爆炸的时代&#xff0c;新闻聚合平台每天需要处理海量的非结构化文本数据。如何从这些杂乱无章的文字中快速提取出关键信息&#xff0c;成为提升内容理解与推荐效…

作者头像 李华
网站建设 2026/8/23 13:36:22

中文命名实体识别实战:RaNER模型部署与WebUI集成指南

中文命名实体识别实战&#xff1a;RaNER模型部署与WebUI集成指南 1. 引言 1.1 AI 智能实体侦测服务 在信息爆炸的时代&#xff0c;非结构化文本数据&#xff08;如新闻、社交媒体内容、文档资料&#xff09;占据了数据总量的80%以上。如何从这些杂乱无章的文字中快速提取出有…

作者头像 李华
网站建设 2026/8/17 8:22:46

AI智能实体侦测服务持续集成与部署

AI智能实体侦测服务持续集成与部署 1. 引言&#xff1a;AI 智能实体侦测服务的工程价值 在自然语言处理&#xff08;NLP&#xff09;的实际应用中&#xff0c;命名实体识别&#xff08;Named Entity Recognition, NER&#xff09; 是信息抽取的核心任务之一。随着中文语料规模…

作者头像 李华
网站建设 2026/8/16 12:56:02

软件测试面试题:Web View如何测试?

Web View介绍 Web View&#xff08;网页视图&#xff09;是一种用于在应用程序中显示网页内容的组件或控件。提供了一种将网页内容嵌入到应用程序中的方式&#xff0c;使用户能够在应用程序中浏览和交互网页。 Web View通常用于开发移动应用程序&#xff0c;特别是混合应用程…

作者头像 李华
网站建设 2026/8/23 13:04:31

Qwen3-VL中英双语避坑指南:云端镜像开箱即用不折腾

Qwen3-VL中英双语避坑指南&#xff1a;云端镜像开箱即用不折腾 引言&#xff1a;跨境电商的AI视觉助手 作为跨境电商运营&#xff0c;每天都要处理大量商品图片和描述。你可能经常遇到这些烦恼&#xff1a; 英文商品图需要人工翻译成中文描述中文商品图需要生成专业的英文介…

作者头像 李华