SpringBoot整合MyBatis四种常用的分页方式(详细总结)
在Spring Boot整合MyBatis进行分页的常见方式有以下四种:
- 使用MyBatis内置的RowBounds对象进行分页。
- 使用MyBatis提供的分页插件(PageHelper)。
- 手动编写分页SQL。
- 使用分布式分页组件,如Sharding-JDBC或MyCAT。
以下是这四种方式的简要说明和示例代码:
- 使用RowBounds
List<YourEntity> selectByRowBounds(RowBounds rowBounds);
int offset = (pageNum - 1) * pageSize;
int limit = pageSize;
RowBounds rowBounds = new RowBounds(offset, limit);
List<YourEntity> list = yourMapper.selectByRowBounds(rowBounds);
使用PageHelper分页插件
首先添加PageHelper依赖,然后在查询前使用
PageHelper.startPage(int pageNum, int pageSize)
。
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>版本号</version>
</dependency>
PageHelper.startPage(pageNum, pageSize);
List<YourEntity> list = yourMapper.select(null);
- 手动编写分页SQL
<select id="selectPaged" resultType="YourEntity">
SELECT * FROM your_table
LIMIT #{offset}, #{limit}
</select>
Map<String, Object> params = new HashMap<>();
params.put("offset", (pageNum - 1) * pageSize);
params.put("limit", pageSize);
List<YourEntity> list = yourMapper.selectPaged(params);
使用分布式分页组件
这通常涉及到中间件,如Sharding-JDBC,它可以将分页操作转换为对数据库的正常查询。
在实际应用中,推荐使用PageHelper分页插件,因为它简单易用,并且有活跃的社区支持。手动编写分页SQL适合于对性能有严格要求,并且数据库不复杂的场景。使用分布式分页组件则更多用于分布式数据库场景。
评论已关闭