瀏覽代碼

编程式事务

24282 1 年之前
父節點
當前提交
632ba8cb13
共有 1 個文件被更改,包括 13 次插入0 次删除
  1. 13 0
      sd-framework/src/main/java/com/sd/framework/util/TransactionUtil.java

+ 13 - 0
sd-framework/src/main/java/com/sd/framework/util/TransactionUtil.java

@@ -6,6 +6,8 @@ import org.springframework.transaction.TransactionStatus;
 import org.springframework.transaction.support.TransactionCallbackWithoutResult;
 import org.springframework.transaction.support.TransactionTemplate;
 
+import java.util.function.Supplier;
+
 public class TransactionUtil {
 
     private final static TransactionTemplate transactionTemplate = SpringUtil.getBean(TransactionTemplate.class);
@@ -24,4 +26,15 @@ public class TransactionUtil {
         });
     }
 
+    public static <T> T execute(Supplier<T> supplier) {
+        return transactionTemplate.execute(status -> {
+            try {
+                return supplier.get();
+            } catch (Exception e) {
+                status.setRollbackOnly();
+                throw e;
+            }
+        });
+    }
+
 }