首先启动类所在的包一定要放在其他的类的父包中,这样容易让启动类扫描到其他的类,不需要多余的配置了
.事物管理
事物原理
事物分类
单事物处理(单数据源) 同一个项目 连接一个数据库 直接在需要加注解的方法 上面加上一个注解 @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层)