一个项目要连接多个数据库这种需求在日常开发中也是常见的事,我们今天就来看看SpringBoot如何整合多数据源。
当然,我们还是用到前面讲的Mybatis和Druid,只是多添加了一个数据源而已
首先,修改配置文件,增加一个数据源:
多数据源配置如上图,我们配置了spring.datasource.demo和spring.datasource.demo2两个数据源
重点要注意的是上图红圈部分,通常来说,我们配置是直接使用url即可的,但笔者在试验中发现,如果仍使用url来配置的话,会报如下的错误:
配置出错将url更改为jdbc-url后倒可正常运行,而至于url和jdbc-url到底有什么区别,该点笔者也没搞明白,还望有懂的大佬不吝赐教!
接着我们对两个数据源进行配置,主要进行DataSource、DataSourceTransactionManager、SqlSessionFactory 、SqlSessionTemplate四个数据项的配置,其中主数据源用@Primary修饰:
主数据源配置 从数据源配置从上面配置,我们也可以看出,其实是通过扫描不同的包和指定不同映射文件的路径来达到使用不同数据源的目的。
这里要注意建立相应不同包名的包,然后将使用不同数据源的Mapper及映射文件存放于对应的包名下,否则程序会报错。
接着,我们编写相应的测试类对不同数据源进行验证:
验证不同数据源测试类也非常简单,织入不同数据源的Mapper然后调用即可,结果如下:
主数据源所有用户:[{"age":30,"company":"阿里","id":1,"name":"张三"},{"age":28,"company":"腾讯","id":2,"name":"李四"},{"age":26,"company":"百度","id":3,"name":"王五"},{"age":24,"company":"小米","id":4,"name":"赵六"}]
从数据源所有用户:[{"age":66,"company":"云南白药","id":1,"name":"田七"}]
网友评论