MyBatis-Plus 分页查询
结果来自于GPT,做归档留存
使用 MyBatis-Plus 进行分页查询并返回分页信息非常方便。MyBatis-Plus 提供了内置的分页插件,可以自动处理分页逻辑,并返回分页相关的信息,如当前页数、每页记录数、总记录数等。
下面是一个使用 MyBatis-Plus 进行分页查询并返回分页信息的示例:
1. 引入依赖
首先,确保你的项目中已经引入了 MyBatis-Plus 的相关依赖。如果还没有,可以在 pom.xml 中添加以下依赖:
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.4.3.4</version>
</dependency>
2. 配置分页插件
在 MyBatis-Plus 中,你需要配置分页插件才能启用分页功能。你可以在配置类中添加以下内容:
import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class MyBatisPlusConfig {
@Bean
public PaginationInterceptor paginationInterceptor() {
return new PaginationInterceptor();
}
}
3. 创建 Mapper 接口
创建一个 Mapper 接口,并继承 MyBatis-Plus 提供的 BaseMapper 接口。
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface UserMapper extends BaseMapper<User> {
}
4. 编写服务层方法
在服务层中编写分页查询的方法。
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 UserService {
@Autowired
private UserMapper userMapper;
public IPage<UserDTO> getUsersByPage(int currentPage, int pageSize) {
// 创建分页对象
Page<User> page = new Page<>(currentPage, pageSize);
// 执行分页查询
IPage<User> userPage = userMapper.selectPage(page, null);
// 将分页结果转换为DTO
IPage<UserDTO> userDTOPage = userPage.convert(user -> {
UserDTO userDTO = new UserDTO();
userDTO.setId(user.getId());
userDTO.setName(user.getName());
userDTO.setEmail(user.getEmail());
return userDTO;
});
return userDTOPage;
}
}
5. 创建 DTO 类
创建一个用于返回分页结果的 DTO 类。
public class UserDTO {
private Long id;
private String name;
private String email;
// getters and setters
}
6. 测试分页查询
在控制器中调用服务层的方法进行测试。
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class UserController {
@Autowired
private UserService userService;
@GetMapping("/users")
public IPage<UserDTO> getUsers(@RequestParam int currentPage, @RequestParam int pageSize) {
return userService.getUsersByPage(currentPage, pageSize);
}
}
结果示例
访问 /users?currentPage=1&pageSize=10 时,返回的结果示例:
{
"records": [
{
"id": 1,
"name": "John Doe",
"email": "john.doe@example.com"
},
{
"id": 2,
"name": "Jane Doe",
"email": "jane.doe@example.com"
}
],
"total": 50,
"size": 10,
"current": 1,
"pages": 5
}
通过上述步骤,你可以使用 MyBatis-Plus 轻松实现分页查询,并返回包含分页信息的 DTO 对象。

浙公网安备 33010602011771号