轻松实现SpringBoot实现多数据源与事物处理

欢迎进入我的博客,乐于分享是一种美德

首先启动类所在的包一定要放在其他的类的父包中,这样容易让启动类扫描到其他的类,不需要多余的配置了
.事物管理
事物原理
事物分类
单事物处理(单数据源) 同一个项目 连接一个数据库 直接在需要加注解的方法 上面加上一个注解 @Transactional 类:IndexCotroller
多事物处理(多数据源) 同一个项目 连接多个数据库 datesource1 datesource2…
多数据源解决思路:
相当于多个jar包 同时加入到同一个项目中去 每一个jar包 负责一个数据源(数据库)

对比:
   单数据源 一个dao/一个service/一个mapper
   多数据源 多个dao/多个service/多个datasource
步骤:1.数据库创建两个库(可以多个库),分别创建一张表(可以多张表)
     2.domain:分别创建两个实体类对应数据库的数据表(多张表就有多个实体类)
       注意:为了简单,数据库创建不同的数据库 但数据表字段是相同的,所以我创建一个实体类User
     3. 分为两个数据源(对应两个数据库),所以分别创建两个dao和service(test1和test2)
     	dao--对应的是@mapper--没有mapper.xml因为我用的是全注解的方式
     	service--对应的是@service,分别对应的是不同数据库和数据表,一定要注意
     4.在配置文件中创建两个数据源
       spring.datasource.test1
       spring.datasource.test2
     5. 获取数据库的数据源--datasource包
     	@Configuration:把当前类装配到Spring容器中
        datasourceconfig1:mapper1
        	1.DataSource  @Bean() 数据源
        	2.SqlSessionFactory  @Bean() sqlsession
        	3.DataSourceTransactionManager  @Bean(“test1transactionmanager”) 事物
        	4.SqlSessionTemplate  @Bean()  模版--有了模版之后 就差sql语句 就可以对数据库查询类-->mapper1
        	  装配到Spring容器中
        datasourceconfig2:mapper2
            1.DataSource  @Bean() 数据源
        	2.SqlSessionFactory  @Bean() sqlsession
        	3.DataSourceTransactionManager  @Bean(“test2transactionmanager”) 事物
        	4.SqlSessionTemplate  @Bean()  模版--有了模版之后 就差sql语句 就可以对数据库查询类-->mapper2
        	  装配到Spring容器中
     6.马上大功告成了,最后的controller层,直接使用@Autowired导入数据源,就可以下一步操作了
    
 多数据源事物
     在service1层 添加@Transactional(transactionManager="test1transactionmanager")
     在service2层 添加@Transactional(transactionManager="test2transactionmanager")
     一一对应就好。

Springboot 打包:
命令:mvn package–在命令行执行,要在项目所在目录
注意:打包过程中出现No runnable methods报错
解决方案:检查测试类是否存在可以运行的测试类
如果没有添加一个空的测试类
@Test
public void test(){}
这个代码下载就可以用 但是需要自定义数据库的库名(application.properties)和对应的查询数据库的sql(dao层)
实现代码百度云盘地址:链接:https://pan.baidu.com/s/15rt1zuHR2IMo4eTlR-Wz4A 密码:srel

猜你喜欢

转载自blog.csdn.net/m0_37871296/article/details/88569970
今日推荐