温馨提示×

温馨提示×

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

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

java mybatis如何做分页查询

发布时间:2026-09-02 18:01:17 来源:亿速云 阅读:92 作者:小樊 栏目:编程语言

在 Java 中使用 MyBatis 做分页查询,常见有三种方式:


一、使用 Limit(最原始、最常用)

1. Mapper 接口

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

2. XML 映射

<select id="selectUserByPage" 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.selectUserByPage(offset, pageSize);

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


二、使用 PageHelper(最推荐,企业常用)

1. 引入依赖(Maven)

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

2. 配置(Spring / Spring Boot)

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

3. Mapper(无需写 limit)

List<User> selectAllUser();
<select id="selectAllUser" resultType="User">
    SELECT * FROM user
</select>

4. 使用方式

PageHelper.startPage(1, 10); // 第1页,每页10条
List<User> list = userMapper.selectAllUser();

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

5. PageInfo 常用属性

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

✅ 优点:全自动分页、支持多数据库
✅ 企业项目最常用


三、使用 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);
userMapper.selectPage(page, null);

List<User> list = page.getRecords();
long total = page.getTotal();

四、总结建议

方式 推荐度 说明
Limit ⭐⭐ 简单 SQL
PageHelper ⭐⭐⭐⭐⭐ 最常用
MyBatis-Plus ⭐⭐⭐⭐ 已用 MP 时

如果你是 Spring Boot + MyBatis,我可以直接帮你写一套完整示例。

向AI问一下细节

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

AI