使用`mybatis plus` 进行分页的时候,是无法进行一对多、多对多的分页的。最总要的原因是因为,该框架无法清楚count的依据是什么,以哪个表算出来的行数为准,但是我们所有的分页格式已经统一好使用`IPage`对象了,那么该如何适配一对多、多对多分页呢?
## PageAdapter
使用分页时,前端传入的数据统一格式为`current`当前页,`size`每页大小。而我们在数据库中要将这两个数据变更为从第几行到第几行,所以我们需要简单的适配一下:
```java
@Data
public class PageAdapter{
private int begin;
private int end;
public PageAdapter(Page page) {
int[] startEnd = PageUtil.transToStartEnd((int) page.getCurrent(), (int) page.getSize());
this.begin = startEnd[0];
this.end = startEnd[1];
}
}
```
## Count
在使用`mybatis plus` 进行分页的时候,该工具会自动为我们编写count的sql,而一对多进行分页时如:
1个订单有5个订单项,在使用`mybatis plus` 生成的`count sql` 会认为每行都是一条数据,导致最后认为会有5条订单信息,实际上应该只有1条订单信息。这个时候我们必须自己手写`count sql`,并区分`records sql`。
具体例子可以查看`OrderServiceImpl`
```java
@Override
public IPage<Order> pageOrdersDetialByOrderParam(Page<Order> page, OrderParam orderParam) {
page.setRecords(orderMapper.listOrdersDetialByOrderParam(new PageAdapter(page), orderParam));
page.setTotal(orderMapper.countOrderDetial(orderParam));
return page;
}
```
- 开发环境准备
- 基本开发手册
- 项目目录结构
- 权限管理
- 通用分页表格
- Swagger文档
- undertow容器
- 对xss攻击的防御
- 分布式锁
- 统一的系统日志
- 统一验证
- 统一异常处理
- 文件上传下载
- 一对多、多对多分页
- 认证与授权
- 从授权开始看源码
- 自己写个授权的方法-开源版
- 商城表设计
- 商品信息
- 商品分组
- 购物车
- 订单
- 地区管理
- 运费模板
- 接口设计
- 必读
- 购物车的设计
- 订单设计-确认订单
- 订单设计-提交订单
- 订单设计-支付
- 生产环境
- nginx安装与跨域配置
- 安装mysql
- 安装redis
- 传统方式部署项目
- docker
- 使用docker部署商城
- centos jdk安装
- docker centos 安装
- Docker Compose 安装与卸载
- docker 镜像的基本操作
- docker 容器的基本操作
- 通过yum安装maven
- 常见问题