概述

MybatisPlus 提供了分页的功能。
IPage内部原理是基于拦截器,但是这个拦截的是方法以及方法中的参数,这个也会判断是否是查询操作。如果是查询操作,才会进入分页的处理逻辑。
进入分页逻辑处理后,拦截器会通过反射获取该方法的参数进行判断是否存在IPage对象的实现类。如果不存在则不进行分页,存在则将该参数赋值给IPage对象。然后进行拼接sql的处理完成分页操作。使用IPage需要注入一个bean拦截器交给spring进行管理。

项目依赖

  • JDK 1.8
  • SpringBoot 2.5.1
  • MybatisPlus 3.4.3.1

分页实现

maven依赖

 <!-- SpringBoot MybatisPlus --> 
<dependency>
  <groupId>com.baomidou</groupId>
  <artifactId>mybatis-plus-boot-starter</artifactId>
  <version>3.4.3.1</version>
</dependency>
<dependency>
 <!-- MyBatisPlus Core --> 
<groupId>com.baomidou</groupId>
  <artifactId>mybatis-plus</artifactId>
  <version>3.4.3.1</version>
</dependency>
<!-- MyBatisPlus generator -->
<dependency>
  <groupId>com.baomidou</groupId>
  <artifactId>mybatis-plus-generator</artifactId>
  <version>3.4.1</version>
</dependency>
<!-- MyBatisPlus Paging -->
<dependency>
  <groupId>com.github.pagehelper</groupId>
  <artifactId>pagehelper-spring-boot-starter</artifactId>
  <version>1.2.12</version>

controller 类

/**
     * 查询所有用户列表
     * @param pageNum
     * @param pageSize
     * @return
     */
    @PostMapping("/queryAll")
    @ApiOperation(value = "查询所有用户列表")
    //PageInfo<UserEntity>
    public PageResult queryAll(
            @RequestParam(value = "pageNum",defaultValue = "0") int pageNum,
            @RequestParam(value = "pageSize",defaultValue = "10") int pageSize,
            @RequestBody UserEntity userEntity){
      	PageResult pageResult= new PageResult();
        try{
            pageResult = userService.selectList(pageNum,pageSize,userEntity);
        }catch(Exception e){
            logger.error("查询列表异常",e);
        }
        return pageResult;
    }

service 接口服务类

public interface UserService extends IService<User> {
  
  	/**
      * 获取用户列表
      * @param pageNum
      * @param pageSize
      * @param userEntity
      * @return
      * @throws Exception
      */
     public PageResult selectList(int pageNum, int pageSize, UserEntity userEntity) throws Exception;
  
}

service 接口服务实现类

@Service
public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService {
    /**
     * 日志管理
     */
    private static Logger log = LoggerFactory.getLogger(UserServiceImpl.class);

    /**
     * 用户数据访问接口
     */
    @Autowired
    private UserMapper userMapper;

		/**
     * 获取用户列表
     * @param pageNum
     * @param pageSize
     * @param userEntity
     * @return
     * @throws Exception
     */
    public PageResult selectList(int pageNum, int pageSize, UserEntity userEntity) throws Exception {
        IPage<User> pageInfo =
                userMapper.selectPage(PageDTO.of(pageNum,pageSize),new QueryWrapper<User>());
        PageResult pageResult = new PageResult();
        pageResult.setList(pageInfo.getRecords());
        pageResult.setTotals((int) pageInfo.getTotal());
        return pageResult;
    }
}

测试

POST localhost:8083/user/queryAll?pageNum=0&pageSize=4 {“username”:“admin”,“password”:“123456”}

参考

https://mp.baomidou.com/guide/

https://github.com/baomidou/mybatis-plus

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐