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);
}
}
两种书写方式在本地小数据测试,性能都差不多,但是在大数据的生产环境测试的时候,方法一比方法二就有明显的有事,
特别是在方法一比方法二减少了对数据库的访问,这样就可以避免因为连接数据库的中断而出现问题,这样就更加稳定。