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