当前位置: 首页 > news >正文

SpringBoot整合mybatis多数据源

 废话不多说先上结果

 对应数据库

 

 首先导入所需的mybatis、mysql和lombok依赖

        <dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>2.2.2</version></dependency><dependency><groupId>com.mysql</groupId><artifactId>mysql-connector-j</artifactId><scope>runtime</scope></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency>

配置文件 (两个数据库不一样)

配置 数据库连接类

@Configuration
//basePackages:接口文件的包路径
@MapperScan(basePackages = "com.example.mapper", sqlSessionFactoryRef = "PrimarySqlSessionFactory")
public class PrimaryDataSourceConfig {@Bean(name = "PrimaryDataSource")// 表示这个数据源是默认数据源@Primary//这个一定要加,如果两个数据源都没有@Primary会报错@ConfigurationProperties(prefix = "spring.datasource.primary")//配置文件中的前缀public DataSource getPrimaryDateSource() {return DataSourceBuilder.create().build();}@Bean(name = "PrimarySqlSessionFactory")@Primarypublic SqlSessionFactory primarySqlSessionFactory(@Qualifier("PrimaryDataSource") DataSource datasource)throws Exception {SqlSessionFactoryBean bean = new SqlSessionFactoryBean();bean.setDataSource(datasource);bean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath*:mapping/one/*.xml"));return bean.getObject();// 设置mybatis的xml所在位置}@Bean("PrimarySqlSessionTemplate")// 表示这个数据源是默认数据源@Primarypublic SqlSessionTemplate primarySqlSessionTemplate(@Qualifier("PrimarySqlSessionFactory") SqlSessionFactory sessionfactory) {return new SqlSessionTemplate(sessionfactory);}}
@Configuration
@MapperScan(basePackages = "com.example.mapper2", sqlSessionFactoryRef = "SecondarySqlSessionFactory")
public class SecondaryDataSourceConfig {@Bean(name = "SecondaryDataSource")@ConfigurationProperties(prefix = "spring.datasource.secondary")public DataSource getSecondaryDataSource() {return DataSourceBuilder.create().build();}@Bean(name = "SecondarySqlSessionFactory")public SqlSessionFactory secondarySqlSessionFactory(@Qualifier("SecondaryDataSource") DataSource datasource)throws Exception {SqlSessionFactoryBean bean = new SqlSessionFactoryBean();bean.setDataSource(datasource);bean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath*:mapping/two/*.xml"));return bean.getObject();// 设置mybatis的xml所在位置}@Bean("SecondarySqlSessionTemplate")public SqlSessionTemplate secondarySqlSessionTemplate(@Qualifier("SecondarySqlSessionFactory") SqlSessionFactory sessionfactory) {return new SqlSessionTemplate(sessionfactory);}
}

 实体类(这里写的非常简单)

mapper文件(主要不同的数据库,mapper也要由区分,例如上文配置 数据库连接类中俩个包名并不相同) 

对应的mapper.xml文件

Service层 

 ServiceImpl类

@Service
public class UserServiceImpl implements UserService {@Autowiredprivate PrimaryUserMapper primaryUserMapper;@Autowiredprivate SecondaryUserMapper secondaryUserMapper;@Overridepublic List<User> findAll1() {return primaryUserMapper.findAll();}@Overridepublic List<User> findAll2() {return secondaryUserMapper.findAll();}
}

最后测试是否连接成功

http://www.lryc.cn/news/272112.html

相关文章:

  • 垃圾收集器与内存分配策略
  • Python计算三角形的面积
  • 198.【2023年华为OD机试真题(C卷)】万能字符单词拼写(JavaPythonC++JS实现)
  • Tomcat服务为什么起不来?
  • 计算机网络 VLAN
  • docker搭建Dinky —— 筑梦之路
  • Python基础(十四、数据容器之集合Set)
  • OpenHarmony之HDF驱动框架
  • 深入浅出理解TensorFlow的padding填充算法
  • TDD-LTE 附着流程和去附着流程
  • [Angular] 笔记 23:Renderer2 - ElementRef 的生产版本
  • WEB:探索开源OFD.js技术应用
  • 平方根,又叫二次方根,表示为〔√ ̄〕
  • Springer Latex正文参考文献样式改为数字
  • 六、typescript泛型使用
  • 【快慢指针】26.删除有序数组中的重复项
  • 爬虫工作量由小到大的思维转变---<第三十一章 Scrapy Redis 初启动/conn说明书)>
  • 2023年山东省职业院校技能大赛高职组“软件测试”赛项-单元测试报告答案
  • Matlab论文插图绘制模板第133期—函数极坐标折线图
  • 如何用 GPT 去分析Excel数据
  • 力扣labuladong一刷day51天单调栈应用
  • 单片机相关知识点
  • 009:vue结合el-table实现表格行拖拽排序(基于sortablejs)
  • C语言KR圣经笔记 5.3指针和数组 5.4地址运算
  • 设计模式:简单工厂模式、工厂方法模式、抽象工厂模式
  • Could not load library libcudnn_cnn_infer.so.8
  • ELement UI时间控件el-date-picker误差8小时解决办法
  • Linux日志论转
  • 第7课 利用FFmpeg将摄像头画面与麦克风数据合成后推送到rtmp服务器
  • Microsoft Visual Studio 2022 install Project 下载慢