*在spring-mapper.xml中配置


    <!--配置事务管理器-->
    <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="dataSource"/>
    </bean>

    <!--下面配置事务切面-->
    <tx:annotation-driven transaction-manager="transactionManager"/>

*使用时在方法上加上 @Transactional 注解(一般用在service层)
作用:一条sql语句出现问题下面所有的sql 不在执行,并且已经执行过的语句会回滚到执行这个方法之前的状态
例:

 @Transactional
    @Override
    public ErpResult updateDoInStore(Emp emp, Long id, Long storeuuid) {
        OrderDetail orderDetail = orderDetailMapper.findByGoodsUuid(id);
        if (OrderDetail.STATE_IN.equals(orderDetail.getState())) {
            return ResultUtils.error("商品已经入库,不能重复入库");
        }

        StoreDetail storeDetail = storeDetailMapper.findByGoodsId(storeuuid, orderDetail.getGoodsuuid());
        if (storeDetail != null) {
            Long orderNum = orderDetail.getNum();
            Long storeDetailNum = storeDetail.getNum();
            storeDetail.setNum(orderNum + storeDetailNum);
            storeDetailMapper.updateStoreDetail(storeDetail);
        } else {
            storeDetailMapper.insert(orderDetail.getNum(), orderDetail.getGoodsuuid(), storeuuid);
        }

        Storeoper storeoper = new Storeoper();
        storeoper.setEmpuuid(emp.getUuid());
        storeoper.setOpertime(new Date());
        storeoper.setStoreuuid(storeuuid);
        storeoper.setGoodsuuid(orderDetail.getGoodsuuid());
        storeoper.setNum(orderDetail.getNum());
        storeoper.setType(Storeoper.TYPE_IN);
        storeoperMapper.insert(storeoper);

        orderDetail.setEnder(emp.getUuid());
        orderDetail.setStoreuuid(storeuuid);
        orderDetail.setState(OrderDetail.STATE_IN);
        orderDetail.setEndtime(new Date());
        orderDetailMapper.update(orderDetail);

        boolean b = orderDetailMapper.selectOrderDetailcount(orderDetail.getOrdersuuid());
        if (b) {
            Orders orders = ordersMapper.findById(orderDetail.getOrdersuuid());
            orders.setEnder(emp.getUuid());
            orders.setEndtime(new Date());
            orders.setState(Orders.STATE_END);
            ordersMapper.updateOrder(orders);
        }
        return ResultUtils.ok("入库成功");
    }

posted on 2019-09-10 16:44  脑抽不要停  阅读(342)  评论(0编辑  收藏  举报