在调用前同事接口时,发现查询了5秒多,原因是list做for循环查询数据库,所以一般情况下不要在for循环里面做查询数据库操作
错误示范:
for(User user : UserList){
//查询数据库操作,如查询订单
OrderEntity order = selectByUserId(user.getId);
}
正确示范:
//先把所有用户id都筛选出来
List<Long> userIds = UserList.stream().map(User::getId).collect(Collectors.toList());
//查询所有用户id的所有订单
List<OrderEntity> orderList = selectByUserIds(userIds);
//筛选用户id对应的订单信息,形成Map
Map<Long,OrderEntity> orderEntityMap =
orderList.stream().collect(Collectors.toMap(OrderEntity::getUserId, e -> e, (e1, e2) -> e1));
for(User user : UserList){
//从Map里面通过key用户id,获取value订单信息
OrderEntity order = orderEntityMap.get(user.getId);
}
结束,查询时间大大降低