Переглянути джерело

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

聂秋秋 6 роки тому
батько
коміт
e146c13421

+ 2 - 7
mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/toolkit/sql/SqlHelper.java

@@ -22,11 +22,10 @@ import com.baomidou.mybatisplus.core.metadata.TableInfo;
 import com.baomidou.mybatisplus.core.toolkit.*;
 import org.apache.ibatis.logging.Log;
 import org.apache.ibatis.logging.LogFactory;
-import org.apache.ibatis.session.Configuration;
 import org.apache.ibatis.session.ExecutorType;
 import org.apache.ibatis.session.SqlSession;
 import org.apache.ibatis.session.SqlSessionFactory;
-import org.mybatis.spring.SqlSessionTemplate;
+import org.mybatis.spring.SqlSessionUtils;
 
 import java.util.List;
 
@@ -65,11 +64,7 @@ public final class SqlHelper {
      * @return
      */
     private static SqlSession getSqlSession(Class<?> clazz) {
-        SqlSession session;
-        SqlSessionFactory sqlSessionFactory = GlobalConfigUtils.currentSessionFactory(clazz);
-        Configuration configuration = sqlSessionFactory.getConfiguration();
-        session = GlobalConfigUtils.getGlobalConfig(configuration).getSqlSession();
-        return session !=null ? session : new SqlSessionTemplate(sqlSessionFactory);
+        return SqlSessionUtils.getSqlSession(GlobalConfigUtils.currentSessionFactory(clazz));
     }
     
     /**

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

@@ -4,11 +4,9 @@ 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.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.mockito.internal.matchers.GreaterThan;
@@ -18,9 +16,6 @@ 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;
-
-import java.io.IOException;
-import java.sql.SQLException;
 import java.util.List;
 
 
@@ -37,11 +32,6 @@ public class ActiveRecordTest {
     @Autowired
     private IH2StudentService h2StudentService;
 
-    @Before
-    public void initDB() throws SQLException, IOException {
-        H2Db.initH2Student();
-    }
-
     @Test
     @Transactional
     public void testInsert() {

+ 0 - 11
mybatis-plus/src/test/java/com/baomidou/mybatisplus/test/h2/H2StudentMapperTest.java

@@ -1,21 +1,15 @@
 package com.baomidou.mybatisplus.test.h2;
 
-import java.io.IOException;
-import java.sql.SQLException;
 import java.util.List;
 import java.util.Objects;
 
 import javax.annotation.Resource;
-
-import org.junit.BeforeClass;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 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.Assert;
-import com.baomidou.mybatisplus.test.h2.config.H2Db;
 import com.baomidou.mybatisplus.test.h2.entity.enums.GenderEnum;
 import com.baomidou.mybatisplus.test.h2.entity.enums.GradeEnum;
 import com.baomidou.mybatisplus.test.h2.entity.mapper.H2StudentMapper;
@@ -36,11 +30,6 @@ public class H2StudentMapperTest extends BaseTest {
     @Resource
     protected H2StudentMapper studentMapper;
 
-    @BeforeClass
-    public static void InitDB() throws SQLException, IOException {
-        H2Db.initH2Student();
-    }
-
     @Test
     public void crudTest() {
 //        H2Student stu = new H2Student();

+ 0 - 9
mybatis-plus/src/test/java/com/baomidou/mybatisplus/test/h2/H2UserMapperTest.java

@@ -2,8 +2,6 @@ package com.baomidou.mybatisplus.test.h2;
 
 import static java.util.stream.Collectors.toList;
 
-import java.io.IOException;
-import java.sql.SQLException;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -11,7 +9,6 @@ import java.util.Map;
 import javax.annotation.Resource;
 
 import org.junit.Assert;
-import org.junit.BeforeClass;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.springframework.test.context.ContextConfiguration;
@@ -23,7 +20,6 @@ import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 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.SuperEntity;
 import com.baomidou.mybatisplus.test.h2.entity.enums.AgeEnum;
 import com.baomidou.mybatisplus.test.h2.entity.mapper.H2UserMapper;
@@ -44,11 +40,6 @@ public class H2UserMapperTest extends BaseTest {
     @Resource
     protected H2UserMapper userMapper;
 
-    @BeforeClass
-    public static void InitDB() throws SQLException, IOException {
-        H2Db.initH2User();
-    }
-
     @Test
     public void crudTest() {
         H2User h2User = new H2User();

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

@@ -1,26 +1,21 @@
 package com.baomidou.mybatisplus.test.h2;
 
-import java.io.IOException;
 import java.math.BigDecimal;
 import java.math.RoundingMode;
-import java.sql.SQLException;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 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.Wrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.baomidou.mybatisplus.test.h2.config.H2Db;
 import com.baomidou.mybatisplus.test.h2.entity.enums.AgeEnum;
 import com.baomidou.mybatisplus.test.h2.entity.persistent.H2User;
 import com.baomidou.mybatisplus.test.h2.service.IH2UserService;
@@ -40,11 +35,6 @@ public class H2UserTest extends BaseTest {
     @Autowired
     protected IH2UserService userService;
 
-    @BeforeClass
-    public static void initDB() throws SQLException, IOException {
-        H2Db.initH2User();
-    }
-
     @Test
     public void testInsertMy() {
         String name = "自定义insert";

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

@@ -1,12 +1,9 @@
 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;
@@ -16,7 +13,6 @@ 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;
@@ -33,11 +29,6 @@ public class SqlRunnerTest {
     @Autowired
     private IH2StudentService studentService;
 
-    @BeforeClass
-    public static void InitDB() throws SQLException, IOException {
-        H2Db.initH2Student();
-    }
-
     @Test
     public void testSelectCount(){
         int count = SqlRunner.db().selectCount("select count(1) from h2student");

+ 0 - 9
mybatis-plus/src/test/java/com/baomidou/mybatisplus/test/h2/TestXmlConfig.java

@@ -1,15 +1,11 @@
 package com.baomidou.mybatisplus.test.h2;
 
-import java.io.IOException;
-import java.sql.SQLException;
 import org.junit.Assert;
-import org.junit.BeforeClass;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.test.context.ContextConfiguration;
 import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
-import com.baomidou.mybatisplus.test.h2.config.H2Db;
 import com.baomidou.mybatisplus.test.h2.entity.persistent.H2User;
 import com.baomidou.mybatisplus.test.h2.service.IH2UserService;
 
@@ -24,11 +20,6 @@ public class TestXmlConfig {
     @Autowired
     protected IH2UserService userService;
 
-    @BeforeClass
-    public static void initDB() throws SQLException, IOException {
-        H2Db.initH2User();
-    }
-
     @Test
     public void test() {
         H2User user = userService.getById(101L);

+ 28 - 2
mybatis-plus/src/test/java/com/baomidou/mybatisplus/test/h2/config/DBConfig.java

@@ -7,8 +7,12 @@ import javax.sql.DataSource;
 import org.h2.Driver;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
+import org.springframework.core.io.ClassPathResource;
 import org.springframework.jdbc.datasource.DataSourceTransactionManager;
 import org.springframework.jdbc.datasource.SimpleDriverDataSource;
+import org.springframework.jdbc.datasource.init.DataSourceInitializer;
+import org.springframework.jdbc.datasource.init.DatabasePopulator;
+import org.springframework.jdbc.datasource.init.ResourceDatabasePopulator;
 import org.springframework.transaction.annotation.EnableTransactionManagement;
 
 /**
@@ -24,7 +28,7 @@ import org.springframework.transaction.annotation.EnableTransactionManagement;
 public class DBConfig {
 
     @Bean
-    public DataSource dataSource() throws SQLException {
+    public DataSource dataSource(){
         SimpleDriverDataSource dataSource = new SimpleDriverDataSource();
         dataSource.setDriver(new Driver());
         dataSource.setUrl("jdbc:h2:mem:test;MODE=mysql;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE");
@@ -37,5 +41,27 @@ public class DBConfig {
     public DataSourceTransactionManager transactionManager(DataSource ds) {
         return new DataSourceTransactionManager(ds);
     }
-
+    
+    @Bean
+    public DataSourceInitializer dataSourceInitializer(DataSource dataSource) {
+        final DataSourceInitializer initializer = new DataSourceInitializer();
+        initializer.setDataSource(dataSource);
+        initializer.setDatabasePopulator(databasePopulator());
+        initializer.setEnabled(true);
+        return initializer;
+    }
+    
+    private DatabasePopulator databasePopulator() {
+        ResourceDatabasePopulator resourceDatabasePopulator = new ResourceDatabasePopulator();
+        resourceDatabasePopulator.setContinueOnError(false);
+        resourceDatabasePopulator.addScripts(
+            //todo 这里由你们来进化一下.
+            new ClassPathResource("/h2/student.ddl.sql"),
+            new ClassPathResource("/h2/student.insert.sql"),
+            new ClassPathResource("/h2/user.ddl.sql"),
+            new ClassPathResource("/h2/user.insert.sql")
+        );
+        return resourceDatabasePopulator;
+    }
+    
 }

+ 0 - 42
mybatis-plus/src/test/java/com/baomidou/mybatisplus/test/h2/config/H2Db.java

@@ -1,42 +0,0 @@
-package com.baomidou.mybatisplus.test.h2.config;
-
-import java.io.IOException;
-import java.sql.Connection;
-import java.sql.SQLException;
-import java.sql.Statement;
-
-import javax.sql.DataSource;
-
-import org.springframework.context.ApplicationContext;
-import org.springframework.context.support.ClassPathXmlApplicationContext;
-
-import com.baomidou.mybatisplus.test.base.db.BaseDb;
-
-public class H2Db extends BaseDb {
-
-    public static void initH2User() throws SQLException, IOException {
-        ApplicationContext context = new ClassPathXmlApplicationContext("classpath:h2/spring-test-h2.xml");
-        DataSource ds = context.getBean("dataSource", DataSource.class);
-        try (Connection conn = ds.getConnection()) {
-            H2Db.initData(conn, "/h2/", "user.ddl.sql", "user.insert.sql", "h2user");
-        }
-    }
-
-    public static void initH2Student() throws SQLException, IOException {
-        ApplicationContext context = new ClassPathXmlApplicationContext("classpath:h2/spring-test-h2.xml");
-        DataSource ds = context.getBean("dataSource", DataSource.class);
-        try (Connection conn = ds.getConnection()) {
-            H2Db.initData(conn, "/h2/", "student.ddl.sql", "student.insert.sql", "h2Student");
-        }
-    }
-
-    public static void initData(Connection conn, String path, String ddlFileName, String insertFileName, String tableName)
-        throws SQLException, IOException {
-        String createTableSql = readFile(path, ddlFileName);
-        Statement stmt = conn.createStatement();
-        stmt.execute(createTableSql);
-        stmt.execute("truncate table " + tableName);
-        executeSql(stmt, path, insertFileName);
-        conn.commit();
-    }
-}

+ 1 - 1
mybatis-plus/src/test/resources/h2/student.ddl.sql

@@ -5,5 +5,5 @@ CREATE TABLE IF NOT EXISTS  h2student (
 	gender VARCHAR(10) NULL,
 	age INT(11) NULL DEFAULT NULL ,
 	PRIMARY KEY (id)
-)
+);
 

+ 1 - 1
mybatis-plus/src/test/resources/h2/user.ddl.sql

@@ -10,5 +10,5 @@ CREATE TABLE IF NOT EXISTS  h2user (
 	last_updated_dt TIMESTAMP NULL,
 	deleted INT(1) NULL DEFAULT 0 ,
 	PRIMARY KEY (test_id)
-)
+);