diff --git a/.idea/workspace.xml b/.idea/workspace.xml
index fa5084f..a4230f5 100644
--- a/.idea/workspace.xml
+++ b/.idea/workspace.xml
@@ -10,29 +10,41 @@
-
-
-
-
+
+
+
+
+
+
-
+
+
+
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
+
@@ -51,12 +63,14 @@
-
+
+
+
@@ -96,71 +110,75 @@
- {
- "keyToString": {
- "ASKED_SHARE_PROJECT_CONFIGURATION_FILES": "true",
- "Application.DivPassDataImpl.executor": "Run",
- "Application.ImageUtils.executor": "Run",
- "Application.OcrUtil.executor": "Debug",
- "Application.PubTools.executor": "Run",
- "Application.QCodeInfoServiceImpl.executor": "Debug",
- "Application.SensitiveFilter.executor": "Run",
- "Application.main.executor": "Run",
- "Application.redisConfigUtil.executor": "Debug",
- "Maven.IntegraManager [clean].executor": "Run",
- "Maven.IntegraManager [install].executor": "Run",
- "Maven.IntegralManager [clean].executor": "Run",
- "Maven.IntegralManager [install].executor": "Run",
- "Maven.IntegralManager [site].executor": "Run",
- "Maven.IntegralManager [validate].executor": "Run",
- "Maven.IntegralManagerSys [clean].executor": "Run",
- "Maven.IntegralManagerSys [install].executor": "Run",
- "Maven.devProject [clean].executor": "Run",
- "Maven.devProject [install].executor": "Run",
- "Maven.dev_project [clean].executor": "Run",
- "Maven.dev_project [install].executor": "Run",
- "Maven.special_event [clean].executor": "Run",
- "Maven.special_event [install].executor": "Run",
- "Maven.special_event [org.apache.maven.plugins:maven-assembly-plugin:3.3.0:single].executor": "Run",
- "Maven.special_event [org.springframework.boot:spring-boot-maven-plugin:2.7.11:repackage].executor": "Run",
- "Maven.special_event [package].executor": "Run",
- "Maven.special_event [validate].executor": "Run",
- "RunOnceActivity.OpenProjectViewOnStart": "true",
- "RunOnceActivity.ShowReadmeOnStart": "true",
- "SHARE_PROJECT_CONFIGURATION_FILES": "true",
- "TomEE Server.special_event.executor": "Debug",
- "Tomcat Server.Tomcat 9.0.80.executor": "Debug",
- "deletionFromPopupRequiresConfirmation": "false",
- "git-widget-placeholder": "master",
- "kotlin-language-version-configured": "true",
- "last_opened_file_path": "D:/workspace/IntegralManager",
- "node.js.detected.package.eslint": "true",
- "node.js.detected.package.tslint": "true",
- "node.js.selected.package.eslint": "(autodetect)",
- "node.js.selected.package.tslint": "(autodetect)",
- "nodejs_package_manager_path": "npm",
- "project.structure.last.edited": "Artifacts",
- "project.structure.proportion": "0.15",
- "project.structure.side.proportion": "0.37169158",
- "settings.editor.selected.configurable": "reference.settings.project.maven.importing",
- "vue.rearranger.settings.migration": "true"
+
+}]]>
-
+
+
-
@@ -649,7 +667,9 @@
-
+
+
+
@@ -891,7 +911,15 @@
1753759290530
-
+
+
+ 1756191074573
+
+
+
+ 1756191074573
+
+
@@ -930,7 +958,12 @@
-
+
+
+
+
+ false
+ true
diff --git a/pom.xml b/pom.xml
index ca4a609..8dde5f7 100644
--- a/pom.xml
+++ b/pom.xml
@@ -266,13 +266,14 @@
src/main/resources
- *.properties
+
logback-spring.xml
+ jta.properties
static/**
excel/**
META-INF/spring.factories
diff --git a/src/main/java/com/nmgs/IntegralManagerApplication.java b/src/main/java/com/nmgs/IntegralManagerApplication.java
index 9451d7a..52f98e0 100644
--- a/src/main/java/com/nmgs/IntegralManagerApplication.java
+++ b/src/main/java/com/nmgs/IntegralManagerApplication.java
@@ -5,9 +5,11 @@ import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
import org.springframework.scheduling.annotation.EnableAsync;
+import org.springframework.transaction.annotation.EnableTransactionManagement;
@EnableAsync
@SpringBootApplication
+@EnableTransactionManagement
public class IntegralManagerApplication extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
diff --git a/src/main/java/com/nmgs/MyEnvironmentPostProcessor.java b/src/main/java/com/nmgs/MyEnvironmentPostProcessor.java
index ffdef76..f5ab8b3 100644
--- a/src/main/java/com/nmgs/MyEnvironmentPostProcessor.java
+++ b/src/main/java/com/nmgs/MyEnvironmentPostProcessor.java
@@ -42,76 +42,67 @@ public class MyEnvironmentPostProcessor implements EnvironmentPostProcessor {
String DBType = properties.getProperty("DBType") == null ? "1" : properties.getProperty("DBType");
Newproperties.load(Files.newInputStream(Paths.get(NewPath)));
properties.setProperty("spring.logback.logPath",PathUtil.TomcatPath+"/logs");
- properties.setProperty("spring.datasource.primary.jdbc-url", properties.getProperty("DBUrl"));
- properties.setProperty("spring.datasource.primary.username", properties.getProperty("DBUserName"));
- properties.setProperty("spring.datasource.primary.password", PassWordUtils.decrypt(properties.getProperty("DBPassWord")));
- properties.setProperty("spring.datasource.main.jdbc-url", properties.getProperty("DBUrl"));
- properties.setProperty("spring.datasource.main.username", properties.getProperty("DBUserName"));
- properties.setProperty("spring.datasource.main.password", PassWordUtils.decrypt(properties.getProperty("DBPassWord")));
+ properties.setProperty("spring.datasource.url",properties.getProperty("DBUrl"));
+ properties.setProperty("spring.datasource.username",properties.getProperty("DBUserName"));
+ System.out.println(properties.getProperty("DBPassWord"));
+ System.out.println(PassWordUtils.decrypt(properties.getProperty("DBPassWord")));
+ System.out.println(properties.getProperty("DBPassWord").toCharArray().length);
+ properties.setProperty("spring.datasource.password",PassWordUtils.decrypt(properties.getProperty("DBPassWord")));
+
+ String BakDBType = properties.getProperty("BakDBType") == null ? "1" : properties.getProperty("BakDBType");
+
+ properties.setProperty("spring.datasource.db-petrol.jdbc-url",properties.getProperty("DBUrl"));
+ properties.setProperty("spring.datasource.db-petrol.username",properties.getProperty("DBUserName"));
+ properties.setProperty("spring.datasource.db-petrol.password",PassWordUtils.decrypt(properties.getProperty("DBPassWord")));
+
+ properties.setProperty("spring.datasource.db-bak.jdbc-url",properties.getProperty("BAKDBUrl"));
+ properties.setProperty("spring.datasource.db-bak.username",properties.getProperty("BAKDBUserName"));
+ properties.setProperty("spring.datasource.db-bak.password",PassWordUtils.decrypt(properties.getProperty("BAKDBPassWord")));
+
if(DBType.equals("1")){
- properties.setProperty("spring.datasource.primary.driver-class-name", Newproperties.getProperty("sqlClassName"));
- properties.setProperty("spring.datasource.primary.validationQuery", Newproperties.getProperty("sqlvalidationQuery"));
- properties.setProperty("spring.datasource.primary.hikari.connection-test-query", Newproperties.getProperty("sqlvalidationQuery"));
- properties.setProperty("spring.datasource.main.driver-class-name", Newproperties.getProperty("sqlClassName"));
- properties.setProperty("spring.datasource.main.validationQuery", Newproperties.getProperty("sqlvalidationQuery"));
- properties.setProperty("spring.datasource.main.hikari.connection-test-query", Newproperties.getProperty("sqlvalidationQuery"));
+ properties.setProperty("spring.datasource.db-petrol.driver-class-name",Newproperties.getProperty("sqlClassName"));
+ properties.setProperty("spring.datasource.driver-class-name",Newproperties.getProperty("sqlClassName"));
+ properties.setProperty("spring.datasource.validationQuery",Newproperties.getProperty("sqlvalidationQuery"));
+ properties.setProperty("spring.datasource.hikari.connection-test-query",Newproperties.getProperty("sqlvalidationQuery"));
}else if(DBType.equals("2")){
- properties.setProperty("spring.datasource.primary.driver-class-name", Newproperties.getProperty("OracleClassName"));
- properties.setProperty("spring.datasource.primary.validationQuery", Newproperties.getProperty("OraclevalidationQuery"));
- properties.setProperty("spring.datasource.primary.hikari.connection-test-query", Newproperties.getProperty("OraclevalidationQuery"));
- properties.setProperty("spring.datasource.main.driver-class-name", Newproperties.getProperty("OracleClassName"));
- properties.setProperty("spring.datasource.main.validationQuery", Newproperties.getProperty("OraclevalidationQuery"));
- properties.setProperty("spring.datasource.main.hikari.connection-test-query", Newproperties.getProperty("OraclevalidationQuery"));
+ properties.setProperty("spring.datasource.db-petrol.driver-class-name",Newproperties.getProperty("OracleClassName"));
+ properties.setProperty("spring.datasource.validationQuery",Newproperties.getProperty("OraclevalidationQuery"));
+ properties.setProperty("spring.datasource.hikari.connection-test-query",Newproperties.getProperty("OraclevalidationQuery"));
}else if(DBType.equals("3")){
- properties.setProperty("spring.datasource.primary.driver-class-name", Newproperties.getProperty("DMClassName"));
- properties.setProperty("spring.datasource.primary.validationQuery", Newproperties.getProperty("DMvalidationQuery"));
- properties.setProperty("spring.datasource.primary.hikari.connection-test-query", Newproperties.getProperty("DMvalidationQuery"));
- properties.setProperty("spring.datasource.main.driver-class-name", Newproperties.getProperty("DMClassName"));
- properties.setProperty("spring.datasource.main.validationQuery", Newproperties.getProperty("DMvalidationQuery"));
- properties.setProperty("spring.datasource.main.hikari.connection-test-query", Newproperties.getProperty("DMvalidationQuery"));
+ properties.setProperty("spring.datasource.db-petrol.driver-class-name",Newproperties.getProperty("DMClassName"));
+ properties.setProperty("spring.datasource.validationQuery",Newproperties.getProperty("DMvalidationQuery"));
+ properties.setProperty("spring.datasource.hikari.connection-test-query",Newproperties.getProperty("DMvalidationQuery"));
}else if(DBType.equals("4")){
- properties.setProperty("spring.datasource.primary.driver-class-name", Newproperties.getProperty("MySQLClassName"));
- properties.setProperty("spring.datasource.primary.validationQuery", Newproperties.getProperty("MySQLvalidationQuery"));
- properties.setProperty("spring.datasource.primary.hikari.connection-test-query", Newproperties.getProperty("MySQLvalidationQuery"));
- properties.setProperty("spring.datasource.main.driver-class-name", Newproperties.getProperty("MySQLClassName"));
- properties.setProperty("spring.datasource.main.validationQuery", Newproperties.getProperty("MySQLvalidationQuery"));
- properties.setProperty("spring.datasource.main.hikari.connection-test-query", Newproperties.getProperty("MySQLvalidationQuery"));
+ properties.setProperty("spring.datasource.db-petrol.driver-class-name",Newproperties.getProperty("MySQLClassName"));
+ properties.setProperty("spring.datasource.validationQuery",Newproperties.getProperty("MySQLvalidationQuery"));
+ properties.setProperty("spring.datasource.hikari.connection-test-query",Newproperties.getProperty("MySQLvalidationQuery"));
}
- String BakDBType = properties.getProperty("BakDBType") == null ? "1" : properties.getProperty("BakDBType");
- properties.setProperty("spring.datasource.bak.jdbc-url", properties.getProperty("BAKDBUrl"));
- properties.setProperty("spring.datasource.bak.username", properties.getProperty("BAKDBUserName"));
- properties.setProperty("spring.datasource.bak.password", PassWordUtils.decrypt(properties.getProperty("BAKDBPassWord")));
- if (BakDBType.equals("1")) {
- properties.setProperty("spring.datasource.bak.driver-class-name", Newproperties.getProperty("sqlClassName"));
- properties.setProperty("spring.datasource.bak.validationQuery", Newproperties.getProperty("sqlvalidationQuery"));
- properties.setProperty("spring.datasource.bak.hikari.connection-test-query", Newproperties.getProperty("sqlvalidationQuery"));
- } else if (BakDBType.equals("2")) {
- properties.setProperty("spring.datasource.bak.driver-class-name", Newproperties.getProperty("OracleClassName"));
- properties.setProperty("spring.datasource.bak.validationQuery", Newproperties.getProperty("OraclevalidationQuery"));
- properties.setProperty("spring.datasource.bak.hikari.connection-test-query", Newproperties.getProperty("OraclevalidationQuery"));
- } else if (BakDBType.equals("3")) {
- properties.setProperty("spring.datasource.bak.driver-class-name", Newproperties.getProperty("DMClassName"));
- properties.setProperty("spring.datasource.bak.validationQuery", Newproperties.getProperty("DMvalidationQuery"));
- properties.setProperty("spring.datasource.bak.hikari.connection-test-query", Newproperties.getProperty("DMvalidationQuery"));
- } else if (BakDBType.equals("4")) {
- properties.setProperty("spring.datasource.bak.driver-class-name", Newproperties.getProperty("MySQLClassName"));
- properties.setProperty("spring.datasource.bak.validationQuery", Newproperties.getProperty("MySQLvalidationQuery"));
- properties.setProperty("spring.datasource.bak.hikari.connection-test-query", Newproperties.getProperty("MySQLvalidationQuery"));
+
+ if(BakDBType.equals("1")){
+ properties.setProperty("spring.datasource.db-bak.driver-class-name",Newproperties.getProperty("sqlClassName"));
+ properties.setProperty("spring.datasource.driver-class-name",Newproperties.getProperty("sqlClassName"));
+ properties.setProperty("spring.datasource.validationQuery",Newproperties.getProperty("sqlvalidationQuery"));
+ properties.setProperty("spring.datasource.hikari.connection-test-query",Newproperties.getProperty("sqlvalidationQuery"));
+ }else if(BakDBType.equals("2")){
+ properties.setProperty("spring.datasource.db-bak.driver-class-name",Newproperties.getProperty("OracleClassName"));
+ properties.setProperty("spring.datasource.validationQuery",Newproperties.getProperty("OraclevalidationQuery"));
+ properties.setProperty("spring.datasource.hikari.connection-test-query",Newproperties.getProperty("OraclevalidationQuery"));
+ }else if(BakDBType.equals("3")){
+ properties.setProperty("spring.datasource.db-bak.driver-class-name",Newproperties.getProperty("DMClassName"));
+ properties.setProperty("spring.datasource.validationQuery",Newproperties.getProperty("DMvalidationQuery"));
+ properties.setProperty("spring.datasource.hikari.connection-test-query",Newproperties.getProperty("DMvalidationQuery"));
+ }else if(BakDBType.equals("4")){
+ properties.setProperty("spring.datasource.db-bak.driver-class-name",Newproperties.getProperty("MySQLClassName"));
+ properties.setProperty("spring.datasource.validationQuery",Newproperties.getProperty("MySQLvalidationQuery"));
+ properties.setProperty("spring.datasource.hikari.connection-test-query",Newproperties.getProperty("MySQLvalidationQuery"));
}
- System.out.println("---------------------------IntegralManager本次载入数据库----------------------");
- System.out.println(" url : " + properties.getProperty("spring.datasource.primary.jdbc-url"));
- System.out.println(" username : " + properties.getProperty("spring.datasource.primary.username"));
- System.out.println(" password : " + properties.getProperty("spring.datasource.primary.password"));
- System.out.println(" driver-class-name : " + properties.getProperty("spring.datasource.primary.driver-class-name"));
- System.out.println(" bakurl : " + properties.getProperty("spring.datasource.bak.jdbc-url"));
- System.out.println(" bakusername : " + properties.getProperty("spring.datasource.bak.username"));
- System.out.println(" bakpassword : " + properties.getProperty("spring.datasource.bak.password"));
- System.out.println(" bakdriver-class-name : " + properties.getProperty("spring.datasource.bak.driver-class-name"));
- System.out.println(" mainurl : " + properties.getProperty("spring.datasource.main.jdbc-url"));
- System.out.println(" mainusername : " + properties.getProperty("spring.datasource.main.username"));
- System.out.println(" mainpassword : " + properties.getProperty("spring.datasource.main.password"));
- System.out.println(" maindriver-class-name : " + properties.getProperty("spring.datasource.main.driver-class-name"));
- System.out.println("---------------------------IntegralManager本次载入数据库----------------------");
+
+ System.out.println("---------------------------PetrolCafeteriaFee本次载入数据库----------------------");
+ System.out.println("server.port: " + properties.getProperty("server.port"));
+ System.out.println(" url : " + properties.getProperty("spring.datasource.url"));
+ System.out.println(" username : " + properties.getProperty("spring.datasource.username"));
+ System.out.println(" DBPassWord : " + properties.getProperty("spring.datasource.password"));
+ System.out.println(" TimeZone : " + java.util.TimeZone.getDefault());
//环境名称随意取,但尽量不能和其他环境名称相同,避免不生效
PropertiesPropertySource propertySource = new PropertiesPropertySource("environmentPostProcessor", properties);
PropertiesPropertySource newPropertySource = new PropertiesPropertySource("newEnvironmentPostProcessor", Newproperties);
diff --git a/src/main/java/com/nmgs/config/AtomikosConfig.java b/src/main/java/com/nmgs/config/AtomikosConfig.java
new file mode 100644
index 0000000..67a1efe
--- /dev/null
+++ b/src/main/java/com/nmgs/config/AtomikosConfig.java
@@ -0,0 +1,43 @@
+package com.nmgs.config;
+
+import com.atomikos.icatch.jta.UserTransactionImp;
+import com.atomikos.icatch.jta.UserTransactionManager;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.context.annotation.DependsOn;
+import org.springframework.transaction.PlatformTransactionManager;
+import org.springframework.transaction.jta.JtaTransactionManager;
+
+import javax.transaction.TransactionManager;
+import javax.transaction.UserTransaction;
+
+/**
+ * JTA 事务配置
+ */
+@Configuration
+public class AtomikosConfig {
+ @Bean(name = "userTransaction")
+ public UserTransaction userTransaction() throws Throwable {
+ UserTransactionImp userTransactionImp = new UserTransactionImp();
+ userTransactionImp.setTransactionTimeout(600000);
+ return userTransactionImp;
+ }
+
+ @Bean(name = "atomikosTransactionManager")
+ public TransactionManager atomikosTransactionManager() throws Throwable {
+ UserTransactionManager userTransactionManager = new UserTransactionManager();
+ userTransactionManager.setForceShutdown(false);
+ userTransactionManager.setTransactionTimeout(600000);
+ return userTransactionManager;
+ }
+
+ @Bean(name = "transactionManager")
+ @DependsOn({ "userTransaction", "atomikosTransactionManager" })
+ public PlatformTransactionManager transactionManager() throws Throwable {
+ UserTransaction userTransaction = userTransaction();
+
+ TransactionManager atomikosTransactionManager = atomikosTransactionManager();
+ atomikosTransactionManager.setTransactionTimeout(600000);
+ return new JtaTransactionManager(userTransaction, atomikosTransactionManager);
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/com/nmgs/config/DBSrcBak.java b/src/main/java/com/nmgs/config/DBSrcBak.java
new file mode 100644
index 0000000..78bfbaa
--- /dev/null
+++ b/src/main/java/com/nmgs/config/DBSrcBak.java
@@ -0,0 +1,45 @@
+package com.nmgs.config;
+
+
+import com.baomidou.mybatisplus.core.MybatisConfiguration;
+import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
+import com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean;
+import com.nmgs.util.PropertiesUtil;
+import org.apache.ibatis.logging.stdout.StdOutImpl;
+import org.apache.ibatis.session.SqlSessionFactory;
+import org.mybatis.spring.SqlSessionTemplate;
+import org.mybatis.spring.annotation.MapperScan;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Qualifier;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+import javax.sql.DataSource;
+
+@Configuration
+@MapperScan(basePackages = {"com.nmgs.mapperset.mysqlmapper"}, sqlSessionFactoryRef = "sqlSessionFactoryBak")
+public class DBSrcBak {
+
+ @Autowired
+ MybatisPlusInterceptor mybatisPlusInterceptor;
+ @Bean
+ public SqlSessionFactory sqlSessionFactoryBak(@Qualifier("db_bak") DataSource dataSource) throws Exception {
+ MybatisSqlSessionFactoryBean sqlSessionFactory = new MybatisSqlSessionFactoryBean();
+ sqlSessionFactory.setDataSource(dataSource);
+ MybatisConfiguration configuration = new MybatisConfiguration();
+ configuration.addInterceptor(mybatisPlusInterceptor);
+ // 配置打印sql语句
+ if("Y".equals(PropertiesUtil.getValue("mybatislogImplEnabled"))){
+ configuration.setLogImpl(StdOutImpl.class);
+ }
+ sqlSessionFactory.setConfiguration(configuration);
+// sqlSessionFactory.setMapperLocations(new PathMatchingResourcePatternResolver()
+// .getResources("classpath:mapper/check/**/*.xml"));
+ return sqlSessionFactory.getObject();
+ }
+
+ @Bean
+ public SqlSessionTemplate sqlSessionTemplateBak(@Qualifier("sqlSessionFactoryBak") SqlSessionFactory sqlSessionFactory) throws Exception {
+ return new SqlSessionTemplate(sqlSessionFactory);
+ }
+}
diff --git a/src/main/java/com/nmgs/config/DBSrcPetrol.java b/src/main/java/com/nmgs/config/DBSrcPetrol.java
new file mode 100644
index 0000000..47567af
--- /dev/null
+++ b/src/main/java/com/nmgs/config/DBSrcPetrol.java
@@ -0,0 +1,53 @@
+package com.nmgs.config;
+
+
+
+import com.baomidou.mybatisplus.core.MybatisConfiguration;
+import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
+import com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean;
+import com.nmgs.util.PropertiesUtil;
+import org.apache.ibatis.logging.stdout.StdOutImpl;
+import org.apache.ibatis.session.SqlSessionFactory;
+import org.mybatis.spring.SqlSessionTemplate;
+import org.mybatis.spring.annotation.MapperScan;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Qualifier;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.context.annotation.Primary;
+
+import javax.sql.DataSource;
+
+
+@Configuration
+@MapperScan(basePackages = {"com.nmgs.mapperset.oraclemapper"}, sqlSessionFactoryRef = "sqlSessionFactoryPetrol")
+public class DBSrcPetrol {
+
+ @Autowired
+ MybatisPlusInterceptor mybatisPlusInterceptor;
+
+
+ @Bean
+ @Primary
+ public SqlSessionFactory sqlSessionFactoryPetrol(@Qualifier("db_petrol") DataSource dataSource) throws Exception {
+ MybatisSqlSessionFactoryBean sqlSessionFactory = new MybatisSqlSessionFactoryBean();
+ sqlSessionFactory.setDataSource(dataSource);
+ // 添加分页插件
+ MybatisConfiguration configuration = new MybatisConfiguration();
+ configuration.addInterceptor(mybatisPlusInterceptor);
+ // 配置打印sql语句
+ if("Y".equals(PropertiesUtil.getValue("mybatislogImplEnabled"))){
+ configuration.setLogImpl(StdOutImpl.class);
+ }
+ sqlSessionFactory.setConfiguration(configuration);
+// sqlSessionFactory.setMapperLocations(new PathMatchingResourcePatternResolver()
+// .getResources("classpath:mapper/petrol/**/*.xml"));
+ return sqlSessionFactory.getObject();
+ }
+
+ @Bean
+ @Primary
+ public SqlSessionTemplate sqlSessionTemplatePetrol(@Qualifier("sqlSessionFactoryPetrol") SqlSessionFactory sqlSessionFactory) throws Exception {
+ return new SqlSessionTemplate(sqlSessionFactory);
+ }
+}
diff --git a/src/main/java/com/nmgs/config/DataSourceConfig.java b/src/main/java/com/nmgs/config/DataSourceConfig.java
index e410122..191ba35 100644
--- a/src/main/java/com/nmgs/config/DataSourceConfig.java
+++ b/src/main/java/com/nmgs/config/DataSourceConfig.java
@@ -1,178 +1,116 @@
package com.nmgs.config;
-import com.atomikos.icatch.jta.UserTransactionImp;
-import com.atomikos.icatch.jta.UserTransactionManager;
+
+import com.atomikos.jdbc.AtomikosDataSourceBean;
import com.mysql.cj.jdbc.MysqlXADataSource;
import com.nmgs.util.PropertiesUtil;
import com.trkf.PasswordEncryption.PassWordUtils;
-import com.zaxxer.hikari.HikariDataSource;
+import com.zaxxer.hikari.HikariConfig;
import oracle.jdbc.xa.client.OracleXADataSource;
-import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.boot.context.properties.ConfigurationProperties;
-import org.springframework.boot.jdbc.DataSourceBuilder;
-import org.springframework.boot.jta.atomikos.AtomikosDataSourceBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.DependsOn;
-import org.springframework.transaction.annotation.EnableTransactionManagement;
-import org.springframework.transaction.jta.JtaTransactionManager;
+import org.springframework.context.annotation.Primary;
import javax.sql.DataSource;
-import javax.sql.XADataSource;
-import javax.transaction.SystemException;
-import javax.transaction.TransactionManager;
-import javax.transaction.UserTransaction;
import java.sql.SQLException;
+import java.util.Properties;
+
@Configuration
-@EnableTransactionManagement
public class DataSourceConfig {
-
-
-
@Bean
- public UserTransaction localuserTransaction() throws SystemException {
- UserTransactionImp userTransactionImp = new UserTransactionImp();
- userTransactionImp.setTransactionTimeout(600);
- return userTransactionImp;
+ @ConfigurationProperties(prefix = "spring.datasource.hikari")
+ public HikariConfig hikariConfig(){
+ return new HikariConfig();
}
- @Bean
- public TransactionManager localtransactionManager() throws SystemException {
- UserTransactionManager userTransactionManager = new UserTransactionManager();
- userTransactionManager.setForceShutdown(false);
- userTransactionManager.setTransactionTimeout(600);
- return userTransactionManager;
- }
-
- @Bean
- public JtaTransactionManager jtatransactionManager(
- UserTransaction localuserTransaction,
- TransactionManager localtransactionManager) {
- JtaTransactionManager jtaTransactionManager = new JtaTransactionManager(localuserTransaction, localtransactionManager);
- jtaTransactionManager.setDefaultTimeout(600);
- return jtaTransactionManager;
- }
- /**
- * 将这个对象放入spring容器中(交给Spring管理)
- * @ConfigurationProperties 自动配置属性
- */
- @Bean
- @ConfigurationProperties(prefix = "spring.datasource.primary")
- public XADataSource getDataSourcePrimary() throws SQLException {
- // 创建XA连接池
- if("2".equals(PropertiesUtil.getValue("DBType"))){
+ @Primary
+ @Bean(name = "db_petrol")
+ @ConfigurationProperties(prefix = "spring.datasource.db-petrol")
+ @DependsOn("transactionManager")
+ public DataSource dBSrcPetrol() throws SQLException {
+ AtomikosDataSourceBean atomikosDataSourceBean = new AtomikosDataSourceBean();
+ //HikariDataSource hikariDataSource = new HikariDataSource();
+ String DBType = PropertiesUtil.getValue("DBType");
+ if(DBType.equals("2")){
OracleXADataSource oracleXADataSource = new OracleXADataSource();
oracleXADataSource.setURL(PropertiesUtil.getValue("DBUrl"));
oracleXADataSource.setUser(PropertiesUtil.getValue("DBUserName"));
oracleXADataSource.setPassword(PassWordUtils.decrypt(PropertiesUtil.getValue("DBPassWord")));
- return oracleXADataSource;
- }else if("4".equals(PropertiesUtil.getValue("DBType"))){
- MysqlXADataSource oracleXADataSource = new MysqlXADataSource();
- oracleXADataSource.setURL(PropertiesUtil.getValue("DBUrl"));
- oracleXADataSource.setUser(PropertiesUtil.getValue("DBUserName"));
- oracleXADataSource.setPassword(PassWordUtils.decrypt(PropertiesUtil.getValue("DBPassWord")));
- return oracleXADataSource;
+ atomikosDataSourceBean.setXaDataSource(oracleXADataSource);
+ Properties properties = new Properties();
+// properties.setProperty("v$session.osuser","GSY");
+ properties.setProperty("v$session.program","IntegralManager");
+ // 或者使用 Oracle 连接属性
+ properties.setProperty("oracle.jdbc.programName", "IntegralManager");
+ properties.setProperty("oracle.jdbc.moduleName", "IntegralManager");
+ properties.setProperty("oracle.jdbc.actionName", "IntegralManager");
+ properties.setProperty("applicationName", "IntegralManagerG");
+ atomikosDataSourceBean.setXaProperties(properties);
+ //hikariDataSource.setDataSource(oracleXADataSource);
+ }else if(DBType.equals("4")){
+ MysqlXADataSource mysqlXADataSource = new MysqlXADataSource();
+ mysqlXADataSource.setURL(PropertiesUtil.getValue("DBUrl"));
+ mysqlXADataSource.setUser(PropertiesUtil.getValue("DBUserName"));
+ mysqlXADataSource.setPassword(PassWordUtils.decrypt(PropertiesUtil.getValue("DBPassWord")));
+ //mysqlXADataSource.setPinGlobalTxToPhysicalConnection(true);
+ atomikosDataSourceBean.setXaDataSource(mysqlXADataSource);
+ //hikariDataSource.setDataSource(mysqlXADataSource);
}
- return null;
- }
-
- @Bean(name = "primaryDataSource")
- @DependsOn({"getDataSourcePrimary","jtatransactionManager"})
- public DataSource primaryDataSource(@Qualifier("getDataSourcePrimary") XADataSource xaDataSource) {
- AtomikosDataSourceBean atomikosDataSourceBean = new AtomikosDataSourceBean();
- //atomikosDataSourceBean.setXaDataSourceClassName("com.zaxxer.hikari.HikariXADataSource");
- // 必须为数据源指定唯一标识
- atomikosDataSourceBean.setUniqueResourceName("oracleDataSource");
- atomikosDataSourceBean.setMinPoolSize(1);
- atomikosDataSourceBean.setMaxPoolSize(10);
- atomikosDataSourceBean.setMaxIdleTime(600000);
- //获取连接的最大等待时间(单位:秒),超时抛出异常。默认 0(无限等待),建议设为 30 秒。
- atomikosDataSourceBean.setBorrowConnectionTimeout(300);
- // 每分钟检查空闲连接(单位:秒)
- atomikosDataSourceBean.setMaintenanceInterval(60);
- //事务超时后强制回收连接的等待时间(单位:秒),默认为 0(不启用)。
- atomikosDataSourceBean.setReapTimeout(20); // 事务超时20秒后回收:
- atomikosDataSourceBean.setXaDataSource(xaDataSource);
- return atomikosDataSourceBean;
-
- }
-
- /**
- * 将这个对象放入spring容器中(交给Spring管理)
- * @ConfigurationProperties 自动配置属性
- */
- @Bean
- @ConfigurationProperties(prefix = "spring.datasource.bak")
- public XADataSource getDataSourceBak() throws SQLException {
- // 创建XA连接池
- if("2".equals(PropertiesUtil.getValue("BakDBType"))){
- OracleXADataSource oracleXADataSource = new OracleXADataSource();
- oracleXADataSource.setURL(PropertiesUtil.getValue("BAKDBUrl"));
- oracleXADataSource.setUser(PropertiesUtil.getValue("BAKDBUserName"));
- oracleXADataSource.setPassword(PassWordUtils.decrypt(PropertiesUtil.getValue("BAKDBPassWord")));
- return oracleXADataSource;
- }else if("4".equals(PropertiesUtil.getValue("BakDBType"))){
- MysqlXADataSource oracleXADataSource = new MysqlXADataSource();
- oracleXADataSource.setURL(PropertiesUtil.getValue("BAKDBUrl"));
- oracleXADataSource.setUser(PropertiesUtil.getValue("BAKDBUserName"));
- oracleXADataSource.setPassword(PassWordUtils.decrypt(PropertiesUtil.getValue("BAKDBPassWord")));
- return oracleXADataSource;
- }
- return null;
- }
- @Bean(name = "bakDataSource")
- @DependsOn({"getDataSourceBak","jtatransactionManager"})
- public DataSource bakDataSource(@Qualifier("getDataSourceBak") XADataSource xaDataSource) {
- AtomikosDataSourceBean atomikosDataSourceBean = new AtomikosDataSourceBean();
- //atomikosDataSourceBean.setXaDataSourceClassName("com.zaxxer.hikari.HikariXADataSource");
- // 必须为数据源指定唯一标识
- atomikosDataSourceBean.setUniqueResourceName("mysqlDataSource");
- atomikosDataSourceBean.setMinPoolSize(1);
- atomikosDataSourceBean.setMaxPoolSize(10);
- // 空闲连接保留 300 秒(5分钟)
- atomikosDataSourceBean.setMaxIdleTime(600000);
- atomikosDataSourceBean.setTestQuery("select 1");
- //获取连接的最大等待时间(单位:秒),超时抛出异常。默认 0(无限等待),建议设为 30 秒。
- atomikosDataSourceBean.setBorrowConnectionTimeout(300);
- // 每分钟检查空闲连接(单位:秒)
- atomikosDataSourceBean.setMaintenanceInterval(60);
- //事务超时后强制回收连接的等待时间(单位:秒),默认为 0(不启用)。
- atomikosDataSourceBean.setReapTimeout(20); // 事务超时20秒后回收:
- atomikosDataSourceBean.setXaDataSource(xaDataSource);
+ Properties properties = new Properties();
+ properties.put("default_jta_timeout", "600000"); // 例如设置为60秒
+ properties.put("max_timeout", "600000"); // 例如设置为60秒
+ atomikosDataSourceBean.setXaProperties(properties);
+ atomikosDataSourceBean.setUniqueResourceName("db_petrol");
+ atomikosDataSourceBean.setMinPoolSize(3);
+ atomikosDataSourceBean.setMaxPoolSize(25);
+ atomikosDataSourceBean.setMaxLifetime((int) hikariConfig().getMaxLifetime());
+ atomikosDataSourceBean.setBorrowConnectionTimeout(60000);
+ atomikosDataSourceBean.setLoginTimeout(60000);
+ atomikosDataSourceBean.setMaintenanceInterval(60000);
+ atomikosDataSourceBean.setMaxIdleTime(60000);
+ atomikosDataSourceBean.setReapTimeout(60000);
+ atomikosDataSourceBean.setTestQuery("SELECT 1 FROM DUAL");
return atomikosDataSourceBean;
-
}
-
- @Bean(name = "commonDataSource")
- @ConfigurationProperties(prefix = "spring.datasource.main")
- public DataSource commonDataSource() {
- HikariDataSource build = DataSourceBuilder.create().type(HikariDataSource.class).build();
- build.setConnectionTimeout(600000);
- build.setMinimumIdle(2);
- build.setMaximumPoolSize(10);
- build.setMaxLifetime(1800000);
- build.setIdleTimeout(60000);
- return build;
- }
- public static DataSource initSource(String sourceType){
- DataSourceConfig dsc=new DataSourceConfig();
- try{
- if("PRIMARY".equals(sourceType)){
- return (DataSource) dsc.getDataSourcePrimary();
- }else if("BAK".equals(sourceType)){
- return (DataSource)dsc.getDataSourcePrimary();
- }else if("COMMON".equals(sourceType)){
- // return dsc.commonDataSource();
- return (DataSource) dsc.getDataSourcePrimary();
+ @Primary
+ @Bean(name = "db_bak")
+ @ConfigurationProperties(prefix = "spring.datasource.db-bak")
+ @DependsOn("transactionManager")
+ public DataSource dBSrcBak() throws SQLException {
+ AtomikosDataSourceBean atomikosDataSourceBean = new AtomikosDataSourceBean();
+ String DBType = PropertiesUtil.getValue("BakDBType");
+ if(DBType.equals("2")){
+ OracleXADataSource oracleXADataSource = new OracleXADataSource();
+ oracleXADataSource.setURL(PropertiesUtil.getValue("BAKDBUrl"));
+ oracleXADataSource.setUser(PropertiesUtil.getValue("BAKDBUserName"));
+ oracleXADataSource.setPassword(PassWordUtils.decrypt(PropertiesUtil.getValue("BAKDBPassWord")));
+ atomikosDataSourceBean.setXaDataSource(oracleXADataSource);
+ }else if(DBType.equals("4")){
+ MysqlXADataSource mysqlXADataSource = new MysqlXADataSource();
+ mysqlXADataSource.setURL(PropertiesUtil.getValue("BAKDBUrl"));
+ mysqlXADataSource.setUser(PropertiesUtil.getValue("BAKDBUserName"));
+ mysqlXADataSource.setPassword(PassWordUtils.decrypt(PropertiesUtil.getValue("BAKDBPassWord")));
+ atomikosDataSourceBean.setXaDataSource(mysqlXADataSource);
}
-
- }catch (Exception e){
- e.printStackTrace();
- }
- return null;
+ Properties properties = new Properties();
+ properties.put("default_jta_timeout", "600000"); // 例如设置为60秒
+ properties.put("max_timeout", "600000"); // 例如设置为60秒
+ atomikosDataSourceBean.setXaProperties(properties);
+ atomikosDataSourceBean.setUniqueResourceName("db_bak");
+ atomikosDataSourceBean.setMinPoolSize(3);
+ atomikosDataSourceBean.setMaxPoolSize(25);
+ atomikosDataSourceBean.setMaxLifetime((int) hikariConfig().getMaxLifetime());
+ atomikosDataSourceBean.setBorrowConnectionTimeout(60000);
+ atomikosDataSourceBean.setLoginTimeout(60000);
+ atomikosDataSourceBean.setMaintenanceInterval(60000);
+ atomikosDataSourceBean.setMaxIdleTime(60000);
+ atomikosDataSourceBean.setReapTimeout(60000);
+ atomikosDataSourceBean.setTestQuery("SELECT 1 FROM DUAL");
+ return atomikosDataSourceBean;
}
}
-
diff --git a/src/main/java/com/nmgs/config/MybatisConfig.java b/src/main/java/com/nmgs/config/MybatisConfig.java
index 43fdddc..1493926 100644
--- a/src/main/java/com/nmgs/config/MybatisConfig.java
+++ b/src/main/java/com/nmgs/config/MybatisConfig.java
@@ -8,11 +8,13 @@ import com.nmgs.util.PropertiesUtil;
import org.apache.ibatis.logging.stdout.StdOutImpl;
import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionFactoryBean;
+import org.mybatis.spring.SqlSessionTemplate;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
+import org.springframework.context.annotation.Primary;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
import javax.sql.DataSource;
@@ -33,112 +35,4 @@ public class MybatisConfig {
}
return interceptor;
}
-
- @Configuration
- @MapperScan(
- basePackages = "com.nmgs.mapperset.mysqlmapper",
- sqlSessionFactoryRef = "mysqlSqlSessionFactory"
- )
- public static class MysqlMyBatisConfig {
-
- @Autowired
- @Qualifier("bakDataSource")
- private DataSource bakDataSource;
- @Autowired
- @Qualifier("mybatisPlusInterceptor")
- private MybatisPlusInterceptor mybatisPlusInterceptor;
-
- @Bean
- public SqlSessionFactory mysqlSqlSessionFactory() throws Exception {
- SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();
- if(bakDataSource==null){
- bakDataSource=DataSourceConfig.initSource("BAK");
- }
- sessionFactory.setDataSource(bakDataSource);
- MybatisConfiguration configuration = new MybatisConfiguration();
- configuration.addInterceptor(mybatisPlusInterceptor );
- configuration.setCallSettersOnNulls(true);
- // 配置打印sql语句
- if("Y".equals(PropertiesUtil.getValue("mybatislogImplEnabled"))){
- configuration.setLogImpl(StdOutImpl.class);
- }
- sessionFactory.setConfiguration(configuration);
- sessionFactory.setMapperLocations(
- new PathMatchingResourcePatternResolver()
- .getResources("classpath:com/nmgs/mapperset/mysqlmapper/*.xml")
- );
- return sessionFactory.getObject();
- }
- }
-
- @Configuration
- @MapperScan(
- basePackages = "com.nmgs.mapperset.oraclemapper",
- sqlSessionFactoryRef = "oracleSqlSessionFactory"
- )
- public static class OracleMyBatisConfig {
-
- @Autowired
- @Qualifier("primaryDataSource")
- private DataSource primaryDataSource;
- @Autowired
- @Qualifier("mybatisPlusInterceptor")
- private MybatisPlusInterceptor mybatisPlusInterceptor;
- @Bean
- public SqlSessionFactory oracleSqlSessionFactory() throws Exception {
- SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();
- sessionFactory.setDataSource(primaryDataSource);
- if(primaryDataSource==null){
- primaryDataSource=DataSourceConfig.initSource("PRIMARY");
- }
- MybatisConfiguration configuration = new MybatisConfiguration();
- configuration.addInterceptor(mybatisPlusInterceptor );
- configuration.setCallSettersOnNulls(true);
- // 配置打印sql语句
- if("Y".equals(PropertiesUtil.getValue("mybatislogImplEnabled"))){
- configuration.setLogImpl(StdOutImpl.class);
- }
- sessionFactory.setConfiguration(configuration);
- sessionFactory.setMapperLocations(
- new PathMatchingResourcePatternResolver()
- .getResources("classpath:com/nmgs/mapperset/oraclemapper/*.xml")
- );
- return sessionFactory.getObject();
- }
- }
- @Configuration
- @MapperScan(
- basePackages = "com.nmgs.mappercommon",
- sqlSessionFactoryRef = "commonSqlSessionFactory"
- )
- public static class commonMyBatisConfig {
-
- @Autowired
- @Qualifier("primaryDataSource")
- private DataSource commonDataSource;
- @Autowired
- @Qualifier("mybatisPlusInterceptor")
- private MybatisPlusInterceptor mybatisPlusInterceptor;
- @Bean
- public SqlSessionFactory commonSqlSessionFactory() throws Exception {
- SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();
- if(commonDataSource==null){
- commonDataSource=DataSourceConfig.initSource("COMMON");
- }
- sessionFactory.setDataSource(commonDataSource);
- MybatisConfiguration configuration = new MybatisConfiguration();
- configuration.addInterceptor(mybatisPlusInterceptor );
- configuration.setCallSettersOnNulls(true);
- // 配置打印sql语句
- if("Y".equals(PropertiesUtil.getValue("mybatislogImplEnabled"))){
- configuration.setLogImpl(StdOutImpl.class);
- }
- sessionFactory.setConfiguration(configuration);
- sessionFactory.setMapperLocations(
- new PathMatchingResourcePatternResolver()
- .getResources("classpath:com/nmgs/mappercommon/*.xml")
- );
- return sessionFactory.getObject();
- }
- }
}
diff --git a/src/main/java/com/nmgs/mapperset/oraclemapper/Mapper.java b/src/main/java/com/nmgs/mapperset/oraclemapper/Mapper.java
new file mode 100644
index 0000000..6f4c132
--- /dev/null
+++ b/src/main/java/com/nmgs/mapperset/oraclemapper/Mapper.java
@@ -0,0 +1,25 @@
+package com.nmgs.mapperset.oraclemapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.nmgs.entity.MyReturnMap;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+import java.util.Map;
+
+
+//@org.apache.ibatis.annotations.Mapper
+public interface Mapper extends BaseMapper {
+
+
+ Map select(@Param("sql") String sql);
+ List selectforlist(@Param("sql") String sql);
+ int update(@Param("sql") String sql);
+ IPage