mybatisplus对单表的分页查询
时间: 2025-04-29 17:25:39 浏览: 19
<think>好的,用户想了解MyBatis-Plus中单表分页查询的使用方法和示例。我需要先回忆一下MyBatis-Plus的相关知识,特别是分页功能。记得MyBatis-Plus提供了分页插件,需要先配置才能使用。用户提到的引用里有几种方法,比如使用XML自定义SQL、连表查询的分页,还有单表分页的动态查询。现在用户的问题是单表分页,所以应该参考引用中的方法三,也就是使用Page对象和Wrapper来构建查询条件。
首先,应该确认分页插件的配置步骤,确保用户知道如何启用分页功能。然后,分页查询的基本使用方法是创建Page对象,传入当前页和每页大小。接着,使用Service层或Mapper层的page方法,配合QueryWrapper或LambdaQueryWrapper来添加条件。比如,用户可能需要在查询时根据某些字段进行过滤,这时候可以用like、eq等方法动态添加条件。
用户可能还会关心如何返回分页结果,包括总记录数、当前页数据等。需要说明Page对象包含这些信息。另外,动态查询的条件构造很重要,比如根据是否有参数来决定是否添加某个条件,可以用lambda表达式来简化代码,这样更清晰。
示例代码方面,可以展示两种方式:使用QueryWrapper和LambdaQueryWrapper,这样用户可以根据自己的习惯选择。同时,注意在代码中注释说明每一步的作用,比如创建Page对象、构建查询条件、执行分页查询等。还要提到需要确保分页插件已经正确配置,否则分页不会生效。
可能用户在实际使用中会遇到问题,比如分页失效,这时候需要提醒他们检查分页插件的配置是否正确。此外,动态条件的拼接是常见的需求,特别是在过滤查询时,根据参数是否存在来添加条件,避免SQL语句错误。
最后,生成相关问题的时候,可以考虑用户接下来可能遇到的问题,比如多表分页、性能优化、排序等,这样能帮助他们进一步学习和解决问题。确保回答结构清晰,分步骤说明,让用户能够一步步跟着操作。</think>### MyBatis-Plus单表分页查询使用方法
MyBatis-Plus提供了简洁的单表分页查询支持,主要通过以下步骤实现:
---
#### 一、配置分页插件
需先启用分页功能(Spring Boot配置示例):
```java
@Configuration
public class MybatisPlusConfig {
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor() {
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
interceptor.addInnerInterceptor(new PaginationInnerInterceptor());
return interceptor;
}
}
```
---
#### 二、基础分页查询
使用`Page`对象和`QueryWrapper`实现单表分页:
```java
// 创建分页对象(当前页=1,每页10条)
Page<User> page = new Page<>(1, 10);
// 构建查询条件
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.like("name", "张")
.ge("age", 18);
// 执行查询(返回的page对象包含分页数据)
IPage<User> userPage = userMapper.selectPage(page, queryWrapper);
// 获取结果
List<User> records = userPage.getRecords(); // 当前页数据
long total = userPage.getTotal(); // 总记录数
```
---
#### 三、动态条件分页查询(推荐lambda写法)
使用`LambdaQueryWrapper`实现类型安全的动态条件:
```java
Page<User> pageParam = new Page<>(request.getPageNum(), request.getPageSize());
LambdaQueryWrapper<User> lambdaQuery = Wrappers.lambdaQuery(User.class)
.like(StringUtils.isNotBlank(name), User::getName, name)
.eq(age != null, User::getAge, age)
.orderByDesc(User::getCreateTime);
IPage<User> resultPage = userService.page(pageParam, lambdaQuery);
```
---
#### 四、查询结果说明
返回的`Page`对象包含:
- `records`:当前页数据列表
- `total`:总记录数
- `size`:每页显示条数
- `current`:当前页码
- `pages`:总页数
---
#### 五、注意要点
1. 必须配置分页插件才能生效
2. 动态条件拼接时,推荐使用`lambdaQuery`避免字段硬编码
3. 复杂查询建议配合`@Select`注解或XML映射文件使用[^3]
---
阅读全文
相关推荐


















