Quellcode durchsuchen

link https://gitee.com/baomidou/mybatis-plus/issues/IMMF4

聂秋秋 vor 6 Jahren
Ursprung
Commit
254ce85316

+ 18 - 0
mybatis-plus/src/test/java/com/baomidou/mybatisplus/test/h2/SqlRunnerTest.java

@@ -3,17 +3,22 @@ package com.baomidou.mybatisplus.test.h2;
 
 import java.io.IOException;
 import java.sql.SQLException;
+import java.util.List;
 
 import org.junit.Assert;
 import org.junit.BeforeClass;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.mockito.internal.matchers.GreaterThan;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.test.context.ContextConfiguration;
 import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.baomidou.mybatisplus.extension.toolkit.SqlRunner;
 import com.baomidou.mybatisplus.test.h2.config.H2Db;
 import com.baomidou.mybatisplus.test.h2.entity.persistent.H2Student;
+import com.baomidou.mybatisplus.test.h2.service.IH2StudentService;
 import org.springframework.transaction.annotation.Transactional;
 
 
@@ -25,6 +30,9 @@ import org.springframework.transaction.annotation.Transactional;
 @ContextConfiguration(locations = {"classpath:h2/spring-test-h2.xml"})
 public class SqlRunnerTest {
 
+    @Autowired
+    private IH2StudentService studentService;
+
     @BeforeClass
     public static void InitDB() throws SQLException, IOException {
         H2Db.initH2Student();
@@ -48,4 +56,14 @@ public class SqlRunnerTest {
         Assert.assertTrue(SqlRunner.db().insert("INSERT INTO h2student ( name, age ) VALUES ( {0}, {1} )","测试学生",2));
         Assert.assertTrue(SqlRunner.db(H2Student.class).insert("INSERT INTO h2student ( name, age ) VALUES ( {0}, {1} )","测试学生2",3));
     }
+
+    @Test
+    public void testTransactional(){
+        try {
+            studentService.testSqlRunnerTransactional();
+        } catch (Exception e){
+            List<H2Student> list = studentService.list(new QueryWrapper<H2Student>().like("name", "sqlRunnerTx"));
+            Assert.assertTrue(CollectionUtils.isEmpty(list));
+        }
+    }
 }

+ 5 - 1
mybatis-plus/src/test/java/com/baomidou/mybatisplus/test/h2/service/IH2StudentService.java

@@ -1,10 +1,14 @@
 package com.baomidou.mybatisplus.test.h2.service;
 
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.baomidou.mybatisplus.test.h2.entity.persistent.H2Student;
+
 /**
  * Created by nieqiuqiu on 2018/9/6.
  */
-public interface IH2StudentService {
+public interface IH2StudentService extends IService<H2Student> {
 
     void testTransactional();
 
+    void testSqlRunnerTransactional();
 }

+ 14 - 2
mybatis-plus/src/test/java/com/baomidou/mybatisplus/test/h2/service/impl/H2StudentServiceImpl.java

@@ -1,5 +1,9 @@
 package com.baomidou.mybatisplus.test.h2.service.impl;
 
+import com.baomidou.mybatisplus.core.exceptions.MybatisPlusException;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.baomidou.mybatisplus.extension.toolkit.SqlRunner;
+import com.baomidou.mybatisplus.test.h2.entity.mapper.H2StudentMapper;
 import com.baomidou.mybatisplus.test.h2.entity.persistent.H2Student;
 import com.baomidou.mybatisplus.test.h2.service.IH2StudentService;
 import org.springframework.stereotype.Service;
@@ -9,14 +13,22 @@ import org.springframework.transaction.annotation.Transactional;
  * Created by Administrator on 2018/9/6.
  */
 @Service
-public class H2StudentServiceImpl implements IH2StudentService {
+public class H2StudentServiceImpl extends ServiceImpl<H2StudentMapper,H2Student> implements IH2StudentService {
 
     @Override
-    @Transactional
+    @Transactional(rollbackFor = RuntimeException.class)
     public void testTransactional() {
         new H2Student(null, "tx1", 2).insert();
         new H2Student(null, "tx2", 2).insert();
         new H2Student(null, "tx3", 2).insert();
         throw new RuntimeException("测试AR事务回滚");
     }
+
+    @Override
+    @Transactional(rollbackFor = RuntimeException.class)
+    public void testSqlRunnerTransactional() {
+        SqlRunner.db().insert("INSERT INTO h2student ( name, age ) VALUES ( {0}, {1} )","sqlRunnerTx1",2);
+        SqlRunner.db().insert("INSERT INTO h2student ( name, age ) VALUES ( {0}, {1} )","sqlRunnerTx2",2);
+        throw new MybatisPlusException("测试普通插入事务回滚");
+    }
 }

+ 2 - 2
mybatis-plus/src/test/java/com/baomidou/mybatisplus/test/h2/service/impl/H2UserServiceImpl.java

@@ -93,7 +93,7 @@ public class H2UserServiceImpl extends ServiceImpl<H2UserMapper, H2User> impleme
     }
 
     @Override
-    @Transactional
+    @Transactional(rollbackFor = RuntimeException.class)
     public void testBatchTransactional() {
         saveBatch(Arrays.asList(new H2User("batch1",0),new H2User("batch2",0),new H2User("batch3",0)));
         saveBatch(Arrays.asList(new H2User("batch4",0),new H2User("batch5",0),new H2User("batch6",0)));
@@ -101,7 +101,7 @@ public class H2UserServiceImpl extends ServiceImpl<H2UserMapper, H2User> impleme
     }
 
     @Override
-    @Transactional
+    @Transactional(rollbackFor = RuntimeException.class)
     public void testSimpleTransactional() {
         save(new H2User("simple1",0));
         save(new H2User("simple2",0));