Prechádzať zdrojové kódy

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

聂秋秋 6 rokov pred
rodič
commit
44394bff75

+ 16 - 0
mybatis-plus/src/test/java/com/baomidou/mybatisplus/test/h2/ActiveRecordTest.java

@@ -2,9 +2,11 @@ package com.baomidou.mybatisplus.test.h2;
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 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.junit.Assert;
 import org.junit.BeforeClass;
 import org.junit.Test;
@@ -12,6 +14,7 @@ import org.junit.runner.RunWith;
 import org.mockito.internal.matchers.GreaterThan;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.test.context.ContextConfiguration;
 import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
 import org.springframework.transaction.annotation.Transactional;
@@ -31,6 +34,9 @@ public class ActiveRecordTest {
 
     private static final Logger LOGGER = LoggerFactory.getLogger(ActiveRecordTest.class);
 
+    @Autowired
+    private IH2StudentService h2StudentService;
+
     @BeforeClass
     public static void InitDB() throws SQLException, IOException {
         H2Db.initH2Student();
@@ -117,4 +123,14 @@ public class ActiveRecordTest {
         H2Student student = new H2Student();
         Assert.assertNotNull(student.selectOne(new QueryWrapper<>()));
     }
+
+    @Test
+    public void testTransactional(){
+        try {
+            h2StudentService.testTransactional();
+        }catch (Exception e){
+            List<H2Student> students = new H2Student().selectList(new QueryWrapper<H2Student>().lambda().like(H2Student::getName, "tx"));
+            Assert.assertTrue(CollectionUtils.isEmpty(students));
+        }
+    }
 }

+ 7 - 0
mybatis-plus/src/test/java/com/baomidou/mybatisplus/test/h2/config/MybatisPlusConfig.java

@@ -3,8 +3,10 @@ package com.baomidou.mybatisplus.test.h2.config;
 import javax.sql.DataSource;
 
 import org.apache.ibatis.plugin.Interceptor;
+import org.apache.ibatis.session.ExecutorType;
 import org.apache.ibatis.session.SqlSessionFactory;
 import org.apache.ibatis.type.JdbcType;
+import org.mybatis.spring.SqlSessionTemplate;
 import org.mybatis.spring.annotation.MapperScan;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
@@ -70,4 +72,9 @@ public class MybatisPlusConfig {
             .setIdType(IdType.ID_WORKER));
         return conf;
     }
+
+    @Bean
+    public SqlSessionTemplate sqlSessionTemplate(SqlSessionFactory sqlSessionFactory){
+        return new SqlSessionTemplate(sqlSessionFactory, ExecutorType.BATCH);
+    }
 }

+ 10 - 0
mybatis-plus/src/test/java/com/baomidou/mybatisplus/test/h2/service/IH2StudentService.java

@@ -0,0 +1,10 @@
+package com.baomidou.mybatisplus.test.h2.service;
+
+/**
+ * Created by nieqiuqiu on 2018/9/6.
+ */
+public interface IH2StudentService {
+
+    void testTransactional();
+
+}

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

@@ -0,0 +1,22 @@
+package com.baomidou.mybatisplus.test.h2.service.impl;
+
+import com.baomidou.mybatisplus.test.h2.entity.persistent.H2Student;
+import com.baomidou.mybatisplus.test.h2.service.IH2StudentService;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+/**
+ * Created by Administrator on 2018/9/6.
+ */
+@Service
+public class H2StudentServiceImpl implements IH2StudentService {
+
+    @Override
+    @Transactional
+    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事务回滚");
+    }
+}