做蔬菜配送有什么网站可下载了解,网站轮播图怎么做,广东东莞人才市场,中英西班牙网站建设目录
1.多数据源
2.事务配置 项目搭建参考:
从零开始搭建SpringBoot项目_从0搭建springboot项目-CSDN博客
SpringBoot学习笔记(二) 整合redismybatisDubbo-CSDN博客
1.多数据源 添加依赖 dependenciesdependencygroupIdorg.springframework.bootmybatisDubbo-CSDN博客
1.多数据源 添加依赖 dependenciesdependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactId/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-test/artifactIdscopetest/scope/dependencydependencygroupIdorg.apache.commons/groupIdartifactIdcommons-lang3/artifactIdversion3.5/version/dependency!--MyBatis整合SpringBoot的起步依赖--dependencygroupIdorg.mybatis.spring.boot/groupIdartifactIdmybatis-spring-boot-starter/artifactIdversion2.2.2/version/dependency!--MySQL的驱动依赖--dependencygroupIdmysql/groupIdartifactIdmysql-connector-java/artifactIdversion5.1.31/version/dependencydependencygroupIdorg.projectlombok/groupIdartifactIdlombok/artifactIdversion1.16.10/version/dependency/dependencies 增加数据库配置 spring.datasource.primary.jdbc-urljdbc:mysql://xxxx/table01?useUnicodetrueautoReconnecttruezeroDateTimeBehaviorconvertToNull
spring.datasource.primary.usernamexxxxx
spring.datasource.primary.passwordxxxxx
spring.datasource.primary.driver-class-namecom.mysql.jdbc.Driverspring.datasource.second.jdbc-urljdbc:mysql://xxxxx/table02?useUnicodetrueautoReconnecttruezeroDateTimeBehaviorconvertToNull
spring.datasource.second.usernamexxxxx
spring.datasource.second.passwordxxxxx
spring.datasource.second.driver-class-namecom.mysql.jdbc.Driver 添加配置类 PrimaryDbConfig.java
Configuration
MapperScan(basePackages {com.ziroom.dao.primary}, sqlSessionFactoryRef primarySqlSessionFactory)
public class PrimaryDbConfig {Primary // 这里要添加Primary,在匹配不到数据源时,primaryData会作为默认数据源Bean(name primaryData)ConfigurationProperties(prefix spring.datasource.primary)public DataSource financeData() {return DataSourceBuilder.create().build();}Bean(name primarySqlSessionFactory)Primarypublic SqlSessionFactory loanSqlSessionFactory(Qualifier(primaryData) DataSource dataSource) throws Exception {SqlSessionFactoryBean bean new SqlSessionFactoryBean();bean.setDataSource(dataSource);bean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources(classpath:mapper/*.xml));return bean.getObject();}Bean(name primarySqlSessionTemplate)Primarypublic SqlSessionTemplate loanSqlSessionTemplate(Qualifier(primarySqlSessionFactory) SqlSessionFactory sqlSessionFactory) {return new SqlSessionTemplate(sqlSessionFactory);}
}// 事务配置Bean(name primaryTransactionManager)Primarypublic DataSourceTransactionManager masterDataSourceTransactionManager(Qualifier(primaryData) DataSource dataSource) {return new DataSourceTransactionManager(dataSource);}SecondDbConfig.java
Configuration
MapperScan(basePackages {com.ziroom.dao.second}, sqlSessionFactoryRef secondSqlSessionFactory)
public class SecondDbConfig {Bean(name secondData)ConfigurationProperties(prefix spring.datasource.second)public DataSource financeData() {return DataSourceBuilder.create().build();}Bean(name secondSqlSessionFactory)public SqlSessionFactory loanSqlSessionFactory(Qualifier(secondData) DataSource dataSource) throws Exception {SqlSessionFactoryBean bean new SqlSessionFactoryBean();bean.setDataSource(dataSource);bean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources(classpath:mapper/*.xml));return bean.getObject();}Bean(name secondSqlSessionTemplate)public SqlSessionTemplate loanSqlSessionTemplate(Qualifier(secondSqlSessionFactory) SqlSessionFactory sqlSessionFactory) {return new SqlSessionTemplate(sqlSessionFactory);}
}// 事务配置
Bean(name secondTransactionManager)public DataSourceTransactionManager masterDataSourceTransactionManager(Qualifier(secondData) DataSource dataSource) {return new DataSourceTransactionManager(dataSource);} 添加mapper相关 启动类屏蔽DataSourceAutoConfiguration.java
注意:类似于SpringBoot学习笔记(二) 整合redismybatisDubbo-CSDN博客 中单数据源的情况,配置文件中配置了spring.datasource.* ,且MapperScan(value com.xxxx.crm.demo.mapper)加到主类上,说明指定的dao关联了默认的spring.datasource.*, 这种情况则不能排除DataSourceAutoConfiguration.class 添加测试类 ResponseBodyRequestMapping(value /testPrimary)public String testPrimary(){Budget budget new Budget();ListBudget budgets budgetMapper.queryBudgetActualList(budget);log.info(Primary 数据源查询 size:{}, budgets.size());return success;}-- 输出:Primary 数据源查询 size:30ResponseBodyRequestMapping(value /testSecond)public String testSecond(){Invoice invoice new Invoice();ListInvoice invoices invoiceMapper.selectListByParams(invoice);log.info(Second 数据源查询 size:{}, invoices.size());return success;}
-- 输出:Second 数据源查询 size:402.事务配置
PrimaryDbConfig.java中增加
Bean(name primaryTransactionManager)public DataSourceTransactionManager masterDataSourceTransactionManager(Qualifier(primaryData) DataSource dataSource) {return new DataSourceTransactionManager(dataSource);}
SecondDbConfig.java中增加
Bean(name secondTransactionManager)public DataSourceTransactionManager masterDataSourceTransactionManager(Qualifier(secondData) DataSource dataSource) {return new DataSourceTransactionManager(dataSource);}
测试类 BudgetService.java
Service
public class BudgetService {Autowiredprivate BudgetMapper budgetMapper;Autowiredprivate InvoiceMapper invoiceMapper;Transactional(valueprimaryTransactionManager,rollbackFor RuntimeException.class)public void saveBudget(Budget budget) {budget.setBudgetYear(1);budget.setBudgetMonth(1);budget.setPartner(2);budgetMapper.insertSelective(budget);if(true){throw new RuntimeException(数据源1抛出异常);}}Transactional(valuesecondTransactionManager,rollbackFor RuntimeException.class)public void saveInvoice(Invoice invoice) {invoice.setPostingDate(new Date());invoice.setAdvancePayment(x);invoice.setInvoiceDate(new Date());invoice.setJournalDate(new Date());invoice.setAllocateRowNo(1);invoiceMapper.insertSelective(invoice);if(true){throw new RuntimeException(数据源2抛出异常);}}
}启动类加:EnableTransactionManagement 代码详见https://github.com/lizhjian/SpringBootTest