mybatisplus手动分页
时间: 2025-02-17 19:18:05 浏览: 40
### MyBatisPlus 手动分页实现
尽管MyBatis Plus自带高效的分页插件,但在某些特定场景下可能需要手动控制分页逻辑。下面展示一种不依赖于内置分页插件的手动分页方式。
#### SQL语句中的LIMIT子句应用
对于MySQL数据库而言,可以通过`LIMIT`关键字配合偏移量(offset)和每页显示记录数(size),来达到分页效果。这种方式允许开发者灵活调整查询条件[^2]。
```sql
SELECT * FROM table_name LIMIT #{offset},#{size}
```
此SQL片段表示从指定位置开始获取一定数量的数据行。其中`#{}`占位符用于接收来自应用程序层传递的实际参数值。
#### Java代码示例
为了更好地理解整个流程,这里给出一段完整的Spring Boot项目中使用MyBatis Plus进行手动分页的操作实例:
```java
// 定义Page对象存储分页信息
public class Page<T> {
private int currentPage; // 当前页码
private int pageSize; // 每页大小
private long total; // 总条目数
private List<T> records;// 数据列表
// getter setter 方法省略...
}
@Service
public class UserService {
@Autowired
private UserMapper userMapper;
public Page<User> getUserList(int pageNum, int pageSize){
// 计算起始索引
int offset = (pageNum - 1) * pageSize;
// 查询总记录数
Long count = userMapper.selectCount(null);
// 构建返回结果集
Page<User> pageResult = new Page<>();
pageResult.setCurrentPage(pageNum);
pageResult.setPageSize(pageSize);
pageResult.setTotal(count);
if(count > 0){
// 只有存在数据才执行分页查询
List<User> userList = userMapper.getUserByLimit(offset,pageSize);
pageResult.setRecords(userList);
}
return pageResult;
}
}
@Mapper
public interface UserMapper extends BaseMapper<User> {
/**
* 根据给定的偏移量和页面尺寸获取用户列表
*/
List<User> getUserByLimit(@Param("offset") Integer offset,@Param("size")Integer size);
}
```
上述例子展示了如何在Service层计算偏移量并调用DAO层完成具体的数据检索工作。值得注意的是,在实际开发过程中还需要考虑边界情况处理等问题[^3]。
阅读全文
相关推荐


















