當前位置: 妍妍網 > 碼農

今日程式碼 PK | 避免迴圈查庫

2024-03-21碼農

在後端開發中,迴圈查庫可以說是一種忌諱,因為與資料庫的 IO 互動是十分耗時的行為。

特別是使用雲資料庫時,不僅有磁盤 IO ,還有網路 IO。

因此我們往往會采用一些策略來避免迴圈查庫。

但是新手往往會忘記這個點,寫出不規範的程式碼,

範例程式碼:

for (ModelVO model : modelList) {
Useruser = userService.getById(model.getUserId());
model.setUser(user);
}

list 裏的數據比較多的情況下,執行個幾十秒都有可能。

我們可以覆寫成這樣,範例程式碼:

List<Long> userIdList = modelList.stream()
.map(Model::getUserId)
.collect(Collectors.toList());
List<User> users = userService.listByIds(userIdList);
Map<Long, List<User>> idUserMap = users.stream()
.collect(Collectors.groupingBy(User::getId));
modelList.forEach(model -> model.setUser(idUserMap.get(model.getUserId())));

這樣就避免了迴圈查庫(上面的程式碼缺少了判空邏輯,大家自行完善)。

你都是使用什麽方法來避免迴圈查庫呢?歡迎投票並在評論區留下自己的做法。

完整程式碼片段來源於程式碼小抄,歡迎點選進入小程式閱讀!

線上存取:https://www.codecopy.cn/post/gl930t

更多優質程式碼歡迎進入小程式檢視!

往期推薦