使用`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
- 常見問題