java mybatis plus 分页查询添加序号
时间: 2023-07-25 11:25:47 浏览: 252
在 Mybatis-Plus 中,可以通过实现 `IPage` 接口的 `getRecords()` 方法,对查询结果中每条记录添加序号,实现分页查询带序号的功能。以下是一个示例代码:
```java
public interface UserMapper extends BaseMapper<User> {
List<User> selectUsersWithRowNumber(Page<User> page, @Param(Constants.WRAPPER) Wrapper<User> wrapper);
}
```
```java
@Service
public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService {
@Override
public IPage<User> selectUsersWithRowNumber(Page<User> page, QueryWrapper<User> wrapper) {
IPage<User> userIPage = baseMapper.selectPage(page, wrapper);
List<User> users = userIPage.getRecords();
long current = userIPage.getCurrent();
long size = userIPage.getSize();
long total = userIPage.getTotal();
long pages = userIPage.getPages();
for (int i = 0; i < users.size(); i++) {
User user = users.get(i);
long rowNumber = (current - 1) * size + i + 1;
user.setRowNumber(rowNumber);
}
return userIPage;
}
}
```
在这个示例中,我们定义了一个 `selectUsersWithRowNumber` 方法,该方法接受两个参数:一个 `Page<User>` 类型的分页对象 `page`,一个 `QueryWrapper<User>` 类型的查询条件对象 `wrapper`。在方法中,我们调用了 Mybatis-Plus 提供的 `selectPage` 方法,获取了分页查询的结果。然后,我们通过 `getRecords` 方法获取查询结果中的所有记录,遍历每条记录,为它们添加序号,并将序号设置到 `rowNumber` 字段中。最后,我们返回包含序号的分页查询结果。
需要注意的是,我们在 `User` 实体类中定义了一个 `rowNumber` 字段,该字段用于存储每条记录的序号。在使用时,需要在查询条件中添加排序规则,否则分页查询结果的序号可能会出现重复或缺失的情况。
阅读全文