温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

java mybatis如何分页查询

发布时间:2026-09-23 06:29:31 来源:亿速云 阅读:89 作者:小樊 栏目:编程语言

Java + MyBatis 中,分页查询常见有 三种方式


一、使用 LIMIT(原生 SQL 分页,最常用)

1️⃣ Mapper 接口

List<User> selectByPage(
    @Param("offset") int offset,
    @Param("pageSize") int pageSize
);

2️⃣ XML 映射

<select id="selectByPage" resultType="User">
    SELECT *
    FROM user
    ORDER BY id
    LIMIT #{offset}, #{pageSize}
</select>

3️⃣ 调用方式

int pageNum = 1;     // 第几页
int pageSize = 10;   // 每页大小
int offset = (pageNum - 1) * pageSize;

List<User> list = userMapper.selectByPage(offset, pageSize);

✅ 优点:简单、性能好
❌ 缺点:需自己写 count 查询


二、使用 PageHelper 插件(最推荐)

1️⃣ 引入依赖

<dependency>
    <groupId>com.github.pagehelper</groupId>
    <artifactId>pagehelper</artifactId>
    <version>5.3.0</version>
</dependency>

2️⃣ 配置(Spring / Spring Boot)

@Bean
public PageInterceptor pageInterceptor() {
    return new PageInterceptor();
}

mybatis-config.xml

<plugins>
    <plugin interceptor="com.github.pagehelper.PageInterceptor"/>
</plugins>

3️⃣ 使用方式

PageHelper.startPage(1, 10); // 第1页,每页10条

List<User> list = userMapper.selectAll();

PageInfo<User> pageInfo = new PageInfo<>(list);

4️⃣ PageInfo 常用字段

pageInfo.getList();       // 数据
pageInfo.getTotal();      // 总条数
pageInfo.getPages();      // 总页数
pageInfo.getPageNum();    // 当前页

✅ 优点:自动分页 + count
✅ 支持 MySQL / Oracle / PostgreSQL


三、使用 MyBatis-Plus 分页(MP 项目推荐)

1️⃣ 配置分页插件

@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor() {
    MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
    interceptor.addInnerInterceptor(new PaginationInnerInterceptor());
    return interceptor;
}

2️⃣ 分页查询

Page<User> page = new Page<>(1, 10);
Page<User> result = userMapper.selectPage(page, null);

3️⃣ 获取结果

result.getRecords();  // 数据
result.getTotal();    // 总数

四、三种方式对比

方式 复杂度 是否自动 count 推荐场景
LIMIT 简单项目
PageHelper 传统 MyBatis
MyBatis-Plus 使用 MP

如果你用的是 Spring Boot / XML / 注解 / Oracle,可以告诉我,我可以给你对应完整示例。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI