概述
MybatisPlus 提供了分页的功能。
IPage内部原理是基于拦截器,但是这个拦截的是方法以及方法中的参数,这个也会判断是否是查询操作。如果是查询操作,才会进入分页的处理逻辑。
进入分页逻辑处理后,拦截器会通过反射获取该方法的参数进行判断是否存在IPage对象的实现类。如果不存在则不进行分页,存在则将该参数赋值给IPage对象。然后进行拼接sql的处理完成分页操作。使用IPage需要注入一个bean拦截器交给spring进行管理。
项目依赖
- JDK 1.8
- SpringBoot 2.5.1
- MybatisPlus 3.4.3.1
分页实现
maven依赖
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.4.3.1</version>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus</artifactId>
<version>3.4.3.1</version>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
<version>3.4.1</version>
</dependency>
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.2.12</version>
controller 类
@PostMapping("/queryAll")
@ApiOperation(value = "查询所有用户列表")
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> {
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;
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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)