mp分页查询用page和IPage
时间: 2024-07-18 10:00:17 浏览: 128
MP(Mybatis Plus)是一个基于MyBatis的超快速ORM框架,它为简化分页查询提供了一种高效的解决方案。`Page` 和 `IPage` 是 MP 中常用的用于处理分页的两个重要类。
1. **Page**: 这是 Mybatis Plus 的基础分页类,它封装了分页的基本逻辑,如获取总记录数、查询分页数据等。在使用时,你需要创建一个 Page 对象,并指定当前页数、每页大小等参数。例如:
```java
Page<User> page = new Page<>(当前页码, 每页记录数);
List<User> users = userMapper.selectPage(page, 查询条件);
```
2. **IPage**: `IPage` 是 Mybatis Plus 提供的高级分页接口,它是对 `Page` 的扩展,包含了更多的功能和优化。与 `Page` 类相比,`IPage` 增加了对拦截器的支持,可以方便地在分页查询过程中执行自定义逻辑。同时,它还支持自定义分页插件。使用 `IPage` 的方式类似,但更推荐使用方法注入的方式,代码结构更清晰:
```java
// 方法注入的方式
IPage<User> iPage = userMapper.selectPage(page, 查询条件);
```
相关问题
MP分页查询链式写法
MP分页查询可以使用链式写法来实现。具体步骤如下:
1. 创建一个QueryWrapper对象,用于添加查询条件。
2. 调用page方法,将分页参数传入,指定当前页和每页显示的记录数。
3. 调用lambda方法,使用Lambda表达式来构建查询条件。
4. 调用selectPage方法,执行分页查询,并将查询结果封装到IPage对象中。
5. 使用IPage对象的方法来获取分页查询的结果,如getRecords方法获取查询的数据记录。
以下是示例代码:
```java
IPage<User> page = new Page<>(1, 10);
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.lambda().eq(User::getAge, 20);
userDao.selectPage(page, queryWrapper);
List<User> userList = page.getRecords();
```
limit分页查询MP如何写
在使用MyBatis-Plus进行分页查询时,我们可以使用`com.baomidou.mybatisplus.extension.plugins.pagination.Page`作为分页参数,并调用`com.baomidou.mybatisplus.extension.plugins.pagination.Page`中的`setCurrent`方法和`setSize`方法来设置每页大小和当前页数。代码示例如下:
```java
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service
public class UserServiceImpl implements UserService {
@Autowired
private UserMapper userMapper;
@Override
public IPage<User> getUserList(int pageNum, int pageSize) {
Page<User> page = new Page<>(pageNum, pageSize);
return userMapper.selectPage(page, null);
}
}
```
在以上示例中,我们使用了`UserMapper`的`selectPage`方法来进行分页查询,其中第一个参数为`Page`对象,第二个参数为查询条件。`selectPage`方法会返回`IPage`对象,该对象包含了当前页数、每页大小、总页数、总记录数以及查询结果等信息。
如果需要加入查询条件,可以在第二个参数中传入`Wrapper`对象。例如,我们要查询`age`大于20的用户,可以按如下方式进行查询:
```java
@Override
public IPage<User> getUserList(int pageNum, int pageSize) {
Page<User> page = new Page<>(pageNum, pageSize);
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.gt("age", 20);
return userMapper.selectPage(page, queryWrapper);
}
```
以上示例中,我们使用了`QueryWrapper`对象来封装查询条件,并将其作为`selectPage`方法的第二个参数传入。`gt`方法表示“大于”,可以传入列名和值。
阅读全文