• Spring Boot 单库事务


    1:启动类配置

    @EnableAspectJAutoProxy(exposeProxy = true)
    @EnableTransactionManagement
    @SpringBootApplication(exclude = {SecurityAutoConfiguration.class})
    public class ShoppingmallApplication {

    public static void main(String[] args) {
    SpringApplication.run(ShoppingmallApplication.class, args);
    }
    }

    2:调用业务方法

       @Override
        @Transactional
        public HttpResult simpleAdd(EquipmentSimpleDto es) {
            HttpResult r = new HttpResult();
            logger.info("==========简易添加==========开始...");
            try {
                String createUser = "shoppingmall";
                String remark = "简易添加";
                Date date = new Date();
    
                // 店铺
                Shops shops = new Shops(es.getShopName(), es.getOrgId());
                shops.setCreateUser(createUser);
                shops.setCreateTime(date);
                shops.setRemark(remark);
                ((ShopsService) AopContext.currentProxy()).save(shops); //本类方法调用
                logger.info("店铺已创建");
    
                // 模板
                ShoppingReceiptTemplate template = new ShoppingReceiptTemplate(es.getOrgId(), es.getShopName());
                template.setIsCommon(Boolean.FALSE);
                template.setCreateUser(createUser);
                template.setCreateTime(date);
                templateService.save(template);  //其他业务层调用
                logger.info("模板已创建");
    
                // 设备
                EquipmentInfo equipmentInfo = new EquipmentInfo(es.getEquipmentId(), es.getOrgId());
                // 设备-关联店铺
                equipmentInfo.setBindings(2);
                equipmentInfo.setShopsId(shops.getId());
                equipmentInfo.setShopsName(shops.getName());
                // 设备-关联模板
                equipmentInfo.setReceiptId(template.getId().toString());
                equipmentInfo.setReceiptName(template.getName());
    
                equipmentInfo.setCreateUser(createUser);
                equipmentInfo.setRemark(remark);
                equipmentInfo.setCreateTime(date);
                equipmentInfoService.save(equipmentInfo);
                logger.info("设备已创建");
    
                r.setCode(0);
                // 测试回滚
                /*
                int i = 0;
                int a =  123 / i;
               System.out.println(a);*/
            } catch (Exception e) {
                e.printStackTrace();
                TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();  //关键
                r.setCode(-1);
                r.setMsg("异常:" + e.getMessage());
            } finally {
                logger.info("==========简易添加==========结束...");
            }
            return r;
        }
  • 相关阅读:
    Android和kernel杂散点集合
    Kernel的IIC驱动分析
    Uboot流程分析
    关于在eclipse当中,对接口方法的实现使用@Override报错的解决方式
    任务调度工具oozie和azkaban的对比
    实现Linux和windows之间实现文件传输的问题解决方式。sftp和ftp
    使用spring-boot创建定时任务。同时创建多线程执行定时任务。
    【C++11】新特性——auto的使用
    Inline函数使用注意事项
    结构体变量的sizeof计算
  • 原文地址:https://www.cnblogs.com/eason-d/p/11834824.html
Copyright © 2020-2023  润新知