ソースを参照

增加多个SqlSessionFactory支持

zhou-hao 7 年 前
コミット
8281a119a1

+ 1 - 0
hsweb-commons/hsweb-commons-dao/hsweb-commons-dao-mybatis/src/main/java/org/hswebframework/web/dao/mybatis/MyBatisAutoConfiguration.java

@@ -70,6 +70,7 @@ public class MyBatisAutoConfiguration {
     }
 
     @Bean(name = "sqlSessionFactory")
+    @Primary
     public SqlSessionFactory sqlSessionFactory(@Qualifier("dataSource") DataSource dataSource) throws Exception {
         SqlSessionFactoryBean factory = new SqlSessionFactoryBean();
         MybatisProperties mybatisProperties = this.mybatisProperties();

+ 37 - 0
hsweb-commons/hsweb-commons-dao/hsweb-commons-dao-mybatis/src/test/java/org/hswebframework/web/dao/crud/TestApplication.java

@@ -1,12 +1,49 @@
 package org.hswebframework.web.dao.crud;
 
+import org.apache.ibatis.session.SqlSessionFactory;
+import org.apache.ibatis.session.TransactionIsolationLevel;
+import org.apache.ibatis.transaction.Transaction;
 import org.hswebframework.web.dao.Dao;
+import org.hswebframework.web.dao.mybatis.EnumDictHandlerRegister;
+import org.hswebframework.web.dao.mybatis.MybatisEntityFactory;
+import org.hswebframework.web.dao.mybatis.MybatisProperties;
+import org.hswebframework.web.dao.mybatis.MybatisUtils;
+import org.hswebframework.web.dao.mybatis.builder.EasyOrmSqlBuilder;
+import org.hswebframework.web.dao.mybatis.dynamic.DynamicDataSourceSqlSessionFactoryBuilder;
+import org.hswebframework.web.dao.mybatis.dynamic.DynamicSpringManagedTransaction;
+import org.mybatis.spring.SqlSessionFactoryBean;
 import org.mybatis.spring.annotation.MapperScan;
+import org.mybatis.spring.boot.autoconfigure.SpringBootVFS;
+import org.mybatis.spring.transaction.SpringManagedTransactionFactory;
+import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
 import org.springframework.boot.autoconfigure.domain.EntityScan;
+import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.ComponentScan;
+import org.springframework.context.annotation.Primary;
+import org.springframework.core.io.ClassPathResource;
+import org.springframework.core.io.Resource;
+import org.springframework.util.StringUtils;
+
+import javax.sql.DataSource;
+import java.util.Arrays;
 
 @SpringBootApplication
 //@EntityScan("org.hswebframework.web.dao")
+
 public class TestApplication {
+
+    @Bean
+    public SqlSessionFactory sqlSessionFactory2(@Qualifier("dataSource") DataSource dataSource) throws Exception {
+        SqlSessionFactoryBean factory = new SqlSessionFactoryBean();
+        factory.setVfs(SpringBootVFS.class);
+        factory.setDataSource(dataSource);
+        String typeHandlers = "org.hswebframework.web.dao.mybatis.handler";
+        factory.setTypeHandlersPackage(typeHandlers);
+        factory.setMapperLocations(new Resource[]{new ClassPathResource("org/hswebframework/web/dao/test/TestDao.xml")});
+
+        SqlSessionFactory sqlSessionFactory = factory.getObject();
+        return sqlSessionFactory;
+    }
+
 }

+ 12 - 2
hsweb-commons/hsweb-commons-dao/hsweb-commons-dao-mybatis/src/test/java/org/hswebframework/web/dao/crud/TestCrud.java

@@ -1,5 +1,6 @@
 package org.hswebframework.web.dao.crud;
 
+import org.apache.ibatis.session.SqlSessionFactory;
 import org.hswebframework.ezorm.core.param.QueryParam;
 import org.hswebframework.ezorm.rdb.executor.SqlExecutor;
 import org.hswebframework.web.commons.entity.param.QueryParamEntity;
@@ -8,6 +9,7 @@ import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.boot.test.context.SpringBootTest;
 import org.springframework.test.context.junit4.AbstractTransactionalJUnit4SpringContextTests;
 import org.springframework.test.context.junit4.SpringRunner;
@@ -27,6 +29,14 @@ public class TestCrud extends AbstractTransactionalJUnit4SpringContextTests {
     private SqlExecutor sqlExecutor;
 
 
+    @Autowired
+    @Qualifier("sqlSessionFactory2")
+    SqlSessionFactory sqlSessionFactory2;
+
+    @Autowired
+    @Qualifier("sqlSessionFactory")
+    SqlSessionFactory sqlSessionFactory;
+
     @Before
     public void init() throws SQLException {
         sqlExecutor.exec("\n" +
@@ -56,8 +66,8 @@ public class TestCrud extends AbstractTransactionalJUnit4SpringContextTests {
 
         QueryParamEntity query = new QueryParamEntity();
         //any in
-        query.where("dataTypes",  Arrays.asList(DataType.TYPE3, DataType.TYPE1));
-        query.includes("nest.name","*");
+        query.where("dataTypes", Arrays.asList(DataType.TYPE3, DataType.TYPE1));
+        query.includes("nest.name", "*");
         List<TestEntity> entities = testDao.queryNest(query);
 
 //        testDao.query(entity);