for循环里面进行数据库查询弊端

for循环里面没有dao的查询,方法一:

List<ProductPop> list = productDao.getProudctList(map);

if (list.size() > 0) {
Map<String, Object> map2 = new HashMap<String, Object>();
List<String> proList =new ArrayList<String>();
for (int i = 0; i < list.size(); i++) {
ProductPop productPop = list.get(i);
proList.add(productPop.getProduct_id());
if (searcher!=null) {
map2.put("status", searcher.getStatus());
}
}
map2.put("products_id",proList);
List<GoodsPop> goodsPop = productDao.queryGoodsList(map2);
for (int i = 0; i < list.size(); i++) {
ProductPop productPop = list.get(i);
List<GoodsPop> goodsPopList=new ArrayList<GoodsPop>();
for (GoodsPop goodsPop2 : goodsPop) {
if (productPop.getProduct_id().equals(goodsPop2.getProducts_id())) {
goodsPopList.add(goodsPop2);
}
}
productPop.setGoodsList(goodsPopList);
}
}
return list;

}

for循环里面有添加dao进行数据库查询,方法二:

List<ProductPop> list = productDao.getProudctList(map);
if (list.size() > 0) {
for (int i = 0; i < list.size(); i++) {
ProductPop productPop = list.get(i);
Map<String, String> map2 = new HashMap<String, String>();
map2.put("products_id", productPop.getProduct_id());
if (searcher!=null) {
map2.put("status", searcher.getStatus());
}
List<GoodsPop> goodsPop = productDao.queryGoods(map2);
if (goodsPop!=null&&goodsPop.size()>0) {
for (int j = 0; j < goodsPop.size(); j++) {
GoodsPop gPop=goodsPop.get(j);
Integer showQuality = 0;
if (gPop.getSku()!=null&&!"".equals(gPop.getSku())) {
List<AtpQueryStock> gStockList = productDao.queryGoodsStockByGidAndWhId(gPop.getSku());
if(gStockList!=null&&gStockList.size()>0){
showQuality = new Integer(gStockList.get(0).getAvailableQty());
}
}
gPop.setShow_quantity(showQuality);
}
}

productPop.setGoodsList(goodsPop);
}
}

两种书写方式在本地小数据测试,性能都差不多,但是在大数据的生产环境测试的时候,方法一比方法二就有明显的有事,

特别是在方法一比方法二减少了对数据库的访问,这样就可以避免因为连接数据库的中断而出现问题,这样就更加稳定。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值