多数据源:spring boot+mybatisplus配置
生活随笔
收集整理的這篇文章主要介紹了
多数据源:spring boot+mybatisplus配置
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
1.在application.properties中配置數(shù)據(jù)連接參數(shù)
| spring.datasource.test1.jdbc-url=jdbc:sqlserver://localhost:1433;databasename=AA spring.datasource.test1.username=root spring.datasource.test1.password=root spring.datasource.test1.driver-class-name=com.microsoft.sqlserver.jdbc.SQLServerDriver spring.datasource.test2.jdbc-url=jdbc:sqlserver://localhost:1433;databasename=AA_Sq spring.datasource.test2.username=root spring.datasource.test2.password=root spring.datasource.test2.driver-class-name=com.microsoft.sqlserver.jdbc.SQLServerDriver |
2.配置數(shù)據(jù)源
AA數(shù)據(jù)庫的配置
| import com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean; 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.Qualifier; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.boot.jdbc.DataSourceBuilder; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.core.io.support.PathMatchingResourcePatternResolver; import org.springframework.jdbc.datasource.DataSourceTransactionManager;import javax.sql.DataSource; //basePackages為dao層接口(用來與數(shù)據(jù)庫做交互)所在的包名 @Configuration @MapperScan(basePackages = {"com.xx.sourceone.mapper"},sqlSessionFactoryRef = "test1SqlSessionFactory") public class DataByAA {// @ConfigurationProperties注解的作用就是從application.properties中讀取以 spring.datasource.test1 開頭的那些配置,并將其設置為數(shù)據(jù)源的配置@Bean(name = "test1DataSource")@ConfigurationProperties(prefix = "spring.datasource.test1")public DataSource testDataSource(){return DataSourceBuilder.create().build();}@Bean(name = "test1SqlSessionFactory")public SqlSessionFactory testSqlSessionFactory(@Qualifier("test1DataSource") DataSource dataSource)throws Exception{MybatisSqlSessionFactoryBean bean=new MybatisSqlSessionFactoryBean();bean.setDataSource(dataSource); // 路徑地址為mapper.xml所在的位置,這個xml是配置文件,處在resource里面,主要用來寫查詢語句bean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath:/mapperone/**.xml"));return bean.getObject();}@Bean(name = "test1TransactionManager")public DataSourceTransactionManager testTransactionManager(@Qualifier("test1DataSource") DataSource dataSource){return new DataSourceTransactionManager(dataSource);}@Bean(name = "test1SqlSessionTemplate")public SqlSessionTemplate testSqlSessionTemplate(@Qualifier("test1SqlSessionFactory") SqlSessionFactory sqlSessionFactory){return new SqlSessionTemplate(sqlSessionFactory);} } |
AA_Sq數(shù)據(jù)庫的配置
| import com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean; 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.Qualifier; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.boot.jdbc.DataSourceBuilder; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.core.io.support.PathMatchingResourcePatternResolver; import org.springframework.jdbc.datasource.DataSourceTransactionManager;import javax.sql.DataSource;@Configuration @MapperScan(basePackages = {"com.xx.sourcetwo.mapper"},sqlSessionFactoryRef = "test2SqlSessionFactory") public class DataByAASq {@Bean(name = "test2DataSource")@ConfigurationProperties(prefix = "spring.datasource.test2")public DataSource testDataSource() {return DataSourceBuilder.create().build();}@Bean(name = "test2SqlSessionFactory")public SqlSessionFactory testSqlSessionFactory(@Qualifier("test2DataSource") DataSource dataSource) throws Exception {MybatisSqlSessionFactoryBean bean = new MybatisSqlSessionFactoryBean();bean.setDataSource(dataSource);bean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath:/mappertwo/**.xml"));return bean.getObject();}@Bean(name = "test2TransactionManager")public DataSourceTransactionManager testTransactionManager(@Qualifier("test2DataSource") DataSource dataSource) {return new DataSourceTransactionManager(dataSource);}@Bean(name = "test2SqlSessionTemplate")public SqlSessionTemplate testSqlSessionTemplate(@Qualifier("test2SqlSessionFactory") SqlSessionFactory sqlSessionFactory) {return new SqlSessionTemplate(sqlSessionFactory);} } |
項目結構如下圖
?
?
3.controller 層
訪問AA數(shù)據(jù)庫
| @RestController public class XxWebController {@AutowiredXxWebMapper xxWebMapper;@PostMapping("/api/list")public Result getList(String sjname){Map<String,Object> map = new HashMap<>();try {XxWeb sjName = xxWebMapper.selectOne(new QueryWrapper<XxWeb>().eq("SjName", sjname));map.put("datas",sjName);return Result.ok(map);}catch (Exception e){return Result.fail(901);}} } |
訪問AA——Sq數(shù)據(jù)庫
| @RestController public class RfgcglController {@AutowiredUserMapper userMapper;@PostMapping("/api2/list")public Result getList(String yhmc){Map<String,Object> map = new HashMap<>();try {User yhmc1 = userMapper.selectOne(new QueryWrapper<User>().eq("yhmc", yhmc));map.put("datas",yhmc1);return Result.ok(map);}catch (Exception e){e.printStackTrace();return Result.fail(901);}} } |
?
配置多數(shù)據(jù)源時,通過查找mybatis-plus官方文檔得知,不能使用原生的 SqlSessionFactory
?
注意紅色標注的代碼,如果mybatisplus配置多數(shù)據(jù)源時使用的SqlSessionFactory不是MybatisSqlSessionFactoryBean,會報錯Invalid bound statement (not found);如果mybatisplus配置多數(shù)據(jù)源時不設置掃描XML文件的路徑,也會報錯Invalid bound statement (not found);如果mybatisplus配置多數(shù)據(jù)源時配置掃描XML文件的路徑不正確,還會報錯Invalid bound statement (not found)
?
?
總結
以上是生活随笔為你收集整理的多数据源:spring boot+mybatisplus配置的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 单数据源:spring boot+myb
- 下一篇: mybatisplus where语句里