注意资源利用 不然导致资源消耗会很严重

本文探讨了在使用ORM框架进行数据库操作时的最佳实践,特别是如何正确地开始和管理事务,以及如何优化SQL查询语句。通过示例代码展示了在循环中避免重复开启和提交事务的重要性,并给出了正确的实现方式。
for(Shop s:list) {
            System.out.println(s.getName());
            String sql="select shopId,sum(ele_bank+ele_card+water_card+water_bank+coal_card+coal_bank) as zonghe ,sum(sale_bank+sale_card) as  sale,sum(cigarette_card+cigarette_bank)  as bacco, sum(yidong_card+yidong_bank+dianxin_card+dianxin_bank)  as recharge from hs_shop_items  where  record_time like '%2013-12-12%' and shopId="+s.getId();
            Session officeSession=officeSessionFactory.openSession();
            officeSession.beginTransaction();
            SQLQuery queryOffice=officeSession.createSQLQuery(sql);
            List<ShopTransDTO>  r=queryOffice.addEntity(ShopTransDTO.class).list();
            res.add(r.get(0));
        }

  

如上图中的

Session officeSession=officeSessionFactory.openSession();
officeSession.beginTransaction();

  

这个部分放在循环中是错误的

 

应该这么写:

Session officeSession=officeSessionFactory.openSession();
officeSession.beginTransaction();
for(Shop s:list) {
            System.out.println(s.getName());
            String sql="select shopId,sum(ele_bank+ele_card+water_card+water_bank+coal_card+coal_bank) as zonghe ,sum(sale_bank+sale_card) as  sale,sum(cigarette_card+cigarette_bank)  as bacco, sum(yidong_card+yidong_bank+dianxin_card+dianxin_bank)  as recharge from hs_shop_items  where  record_time like '%2013-12-12%' and shopId="+s.getId();
            SQLQuery queryOffice=officeSession.createSQLQuery(sql);
            List<ShopTransDTO>  r=queryOffice.addEntity(ShopTransDTO.class).list();
            res.add(r.get(0));
}

  

转载于:https://www.cnblogs.com/toSeeMyDream/p/5537195.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值