多数据源:spring boot+mybatisplus配置
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ù)庫(kù)的配置
| 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ù)庫(kù)做交互)所在的包名 @Configuration @MapperScan(basePackages = {"com.xx.sourceone.mapper"},sqlSessionFactoryRef = "test1SqlSessionFactory") public class DataByAA {// @ConfigurationProperties注解的作用就是從application.properties中讀取以 spring.datasource.test1 開頭的那些配置,并將其設(shè)置為數(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所在的位置,這個(gè)xml是配置文件,處在resource里面,主要用來寫查詢語(yǔ)句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ù)庫(kù)的配置
| 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);} } |
項(xiàng)目結(jié)構(gòu)如下圖
?
?
3.controller 層
訪問AA數(shù)據(jù)庫(kù)
| @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ù)庫(kù)
| @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ù)源時(shí),通過查找mybatis-plus官方文檔得知,不能使用原生的 SqlSessionFactory
?
注意紅色標(biāo)注的代碼,如果mybatisplus配置多數(shù)據(jù)源時(shí)使用的SqlSessionFactory不是MybatisSqlSessionFactoryBean,會(huì)報(bào)錯(cuò)Invalid bound statement (not found);如果mybatisplus配置多數(shù)據(jù)源時(shí)不設(shè)置掃描XML文件的路徑,也會(huì)報(bào)錯(cuò)Invalid bound statement (not found);如果mybatisplus配置多數(shù)據(jù)源時(shí)配置掃描XML文件的路徑不正確,還會(huì)報(bào)錯(cuò)Invalid bound statement (not found)
?
?
總結(jié)
以上是生活随笔為你收集整理的多数据源:spring boot+mybatisplus配置的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 单数据源:spring boot+myb
- 下一篇: mybatisplus where语句里