mybatisplus前端分页查询
时间: 2024-09-19 19:06:31 浏览: 76
MyBatisPlus是一个基于MyBatis的简化、增强工具,它提供了一套方便的API来进行数据库操作,包括前端分页查询。在MyBatisPlus中,前端分页通常是通过`PageVo`对象和一些自定义的Mapper方法配合使用的。
前端分页查询步骤如下:
1. 客户端发送请求到服务器,包含当前页码(page)、每页显示的数量(limit),以及排序字段和方向(如果有的话)。
2. 服务端接收请求后,在Mapper接口中定义一个带有`Page`类型的查询方法,如`List<YourEntity> queryPage(Page<YourEntity> page)`, 其中`YourEntity`是你实体类名,`Page`是MyBatisPlus提供的分页对象。
3. 调用这个方法并传入`Page`对象,这个对象会自动处理分页逻辑,比如偏移量计算和SQL动态拼接等。
4. MyBatisPlus会返回一个`Page`对象,它包含了数据列表和总记录数。你可以从`page.getData()`获取实际的数据,`page.getTotal()`获取总数。
5. 将查询结果返回给前端,并在前端展示分页效果,通常使用JavaScript库如jQuery Pagination或Vue.js的element-ui等。
相关问题
mybatisplus的分页查询
mybatisplus的分页查询可以通过Page类来实现。具体步骤如下:
1. 在mapper接口中定义分页查询方法,方法参数中需要传入Page对象和查询条件参数。
```java
List<User> selectUserList(Page<User> page, @Param("name") String name);
```
2. 在mapper.xml文件中编写分页查询的SQL语句,使用limit关键字实现分页。
```xml
<select id="selectUserList" resultType="User">
select * from user
<where>
<if test="name != null and name != ''">
and name like concat('%',#{name},'%')
</if>
</where>
limit #{page.offset}, #{page.size}
</select>
```
3. 在service层调用mapper接口中的分页查询方法,传入Page对象和查询条件参数。
```java
Page<User> page = new Page<>(pageNum, pageSize);
List<User> userList = userService.selectUserList(page, name);
```
4. 将查询结果封装到Page对象中,返回给前端。
```java
page.setRecords(userList);
return page;
```
mybatisplus 3.5.1 分页查询
### MyBatisPlus 3.5.1 分页查询实现方式
#### 配置分页插件
为了在项目中启用分页功能,需要通过配置类注册 `MybatisPlusInterceptor` 插件。以下是完整的配置代码:
```java
@Configuration
public class MyBatisPlusConfig {
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor() {
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
// 添加分页拦截器,指定数据库类型为 MySQL
interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
return interceptor;
}
}
```
上述代码展示了如何在 Spring Boot 中配置分页插件[^2]。
---
#### 创建实体类和 Mapper 接口
假设有一个名为 `User` 的表,对应的实体类如下所示:
```java
@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {
private Long id;
private String name;
private Integer age;
private String email;
}
```
接着定义相应的 Mapper 接口,继承自 `BaseMapper<User>`:
```java
@Mapper
public interface UserMapper extends BaseMapper<User> {
}
```
---
#### 编写分页查询方法
调用分页查询时,可以使用 `Page<T>` 类作为参数传递给 Mapper 方法。以下是一个简单的示例:
```java
@RestController
@RequestMapping("/users")
public class UserController {
@Autowired
private UserMapper userMapper;
@GetMapping("/page")
public IPage<User> getUserPage(@RequestParam(defaultValue = "1") int current,
@RequestParam(defaultValue = "10") int size) {
// 构造 Page 对象,传入当前页码和每页大小
Page<User> page = new Page<>(current, size);
// 调用 selectPage 方法执行分页查询
IPage<User> result = userMapper.selectPage(page, null);
return result;
}
}
```
在此示例中,`selectPage` 是 MyBatis-Plus 提供的一个内置方法,用于完成分页操作[^3]。
---
#### 前端返回数据结构
前端接收到的数据通常会包含总记录数、当前页码以及实际的列表数据。例如:
```json
{
"pages": 5,
"total": 47,
"size": 10,
"current": 1,
"records": [
{"id": 1, "name": "Alice", "age": 25, "email": "[email protected]"},
{"id": 2, "name": "Bob", "age": 30, "email": "[email protected]"}
]
}
```
这种 JSON 结构便于前端解析并展示分页信息。
---
#### 手动分页(可选)
如果不想依赖 MyBatis-Plus 的分页插件,也可以手动编写 SQL 查询语句来实现分页逻辑。这种方式适用于某些特殊场景下的优化需求。例如:
```sql
SELECT * FROM user LIMIT #{offset}, #{pageSize};
```
其中,`#{offset}` 和 `#{pageSize}` 可以由程序动态计算得出[^1]。
---
阅读全文
相关推荐














