MyBatis 和 MyBatis-Plus 分页查询的区别

MyBatis 和 MyBatis-Plus 分页查询的区别

MyBatis 和 MyBatis-Plus 都支持分页查询,但它们的实现方式和易用性有显著差异。以下是两者的主要区别:

1. 实现方式不同

MyBatis (使用 PageHelper)

  • 基于拦截器:通过拦截 SQL 语句动态修改为分页查询
  • 物理分页:生成带有 LIMIT 或 ROWNUM 的真实分页 SQL
  • 需要插件:必须集成 PageHelper 插件
// MyBatis + PageHelper 示例
PageHelper.startPage(1, 10);  // 第1页,每页10条
List<User> users = userMapper.selectList();
PageInfo<User> pageInfo = new PageInfo<>(users);

MyBatis-Plus

  • 内置分页:原生支持分页,无需额外插件
  • 接口统一:通过 IPage 接口实现
  • 配置简单:只需配置分页拦截器
// MyBatis-Plus 示例
Page<User> page = new Page<>(1, 10);  // 第1页,每页10条
IPage<User> userPage = userMapper.selectPage(page, null);

2. API 设计差异

特性MyBatis (PageHelper)MyBatis-Plus
分页启动方式PageHelper.startPage()创建 Page 对象
分页结果获取PageInfoPageIPage 接口
分页参数方法参数对象属性
总记录数pageInfo.getTotal()page.getTotal()
当前页数据pageInfo.getList()page.getRecords()

3. 功能对比

MyBatis (PageHelper) 特点

  • 支持多种数据库方言
  • 支持多种分页方式(普通分页、计数分页等)
  • 支持 lambda 表达式写法
  • 需要手动处理分页参数传递

MyBatis-Plus 特点

  • 与 MyBatis-Plus 其他功能深度集成
  • 支持自动分页(无需手动调用分页方法)
  • 支持 XML 和注解两种方式的分页
  • 分页信息包含在返回对象中

4. 代码示例对比

MyBatis + PageHelper 实现

// 服务层
public PageInfo<User> getUsers(int pageNum, int pageSize) {
    PageHelper.startPage(pageNum, pageSize);
    List<User> users = userMapper.selectAll();
    return new PageInfo<>(users);
}

// Mapper接口
@Select("SELECT * FROM user")
List<User> selectAll();

MyBatis-Plus 实现

// 服务层
public IPage<User> getUsers(int pageNum, int pageSize) {
    Page<User> page = new Page<>(pageNum, pageSize);
    return userMapper.selectPage(page, null);
}

// Mapper接口
public interface UserMapper extends BaseMapper<User> {
    // 无需手动编写分页查询方法
}

5. 选择建议

  • 简单项目/已有 MyBatis 项目:使用 PageHelper 足够
  • 新项目/大量 CRUD 操作:推荐 MyBatis-Plus
  • 需要深度定制分页逻辑:PageHelper 更灵活
  • 追求开发效率:MyBatis-Plus 更简洁

MyBatis-Plus 的分页设计更加面向对象,与它的其他功能(如条件构造器)配合使用更加流畅,而 PageHelper 则更加轻量级且灵活。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值