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

springboot 多数据源怎么配置在控制台的sql打印日志


程序员的公众号:源1024获取更多资料,无加密无套路!

最近整理了一波电子书籍资料,包含《Effective Java中文版 第2版》《深入JAVA虚拟机》,《重构改善既有代码设计》,《MySQL高性能-第3版》,《Java并发编程实战》等等
获取方式: 关注公众号并回复 电子书 领取,更多内容持续奉上


单数据源的配置:

mybatis-plus:mapper-locations: classpath:mapper/*.xmlconfiguration:log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

但是多数据源就不适用了,那么多数据源应该怎么配置呢?

先看看多数据源配置实现:

application.yml:

spring:#数据源配置(可配置多个数据库)datasource:#主数据库master:type: com.alibaba.druid.pool.DruidDataSourcedriverClassName: com.mysql.jdbc.Driverurl: jdbc:mysql://localhost:3306/hello1?useUnicode=true&characterEncoding=UTF-8&useSSL=falseusername: rootpassword: 1234slave:type: com.alibaba.druid.pool.DruidDataSourcedriverClassName: com.mysql.jdbc.Driverurl: jdbc:mysql://localhost:3306/hello2?useUnicode=true&characterEncoding=UTF-8&useSSL=falseusername: rootpassword: 1234

配置数据源:

MasterDataSourceConfig.java


@Configuration
@MapperScan(basePackages = "com.master.*.Mapper", sqlSessionFactoryRef = "masterSqlSessionFactory")
public class MasterDataSourceConfig {static String MAPPER_LOCATION = "classpath*:masterMapper/*Mapper.xml";/*** 配置数据源* @return*/@Bean(name = "masterDataSource")@ConfigurationProperties(prefix = "spring.datasource.master")public DataSource masterDataSource() {return new DruidDataSource();}/*** 事务管理器*/@Bean(name = "masterTransactionManager")public DataSourceTransactionManager masterTransactionManager() {return new DataSourceTransactionManager(masterDataSource());}/*** 会话工厂*/@Bean(name = "masterSqlSessionFactory")public SqlSessionFactory masterSqlSessionFactory(@Qualifier("masterDataSource") DataSource masterDataSource) throws Exception {final SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();sessionFactory.setDataSource(masterDataSource);sessionFactory.setMapperLocations(new PathMatchingResourcePatternResolver().getResources(MasterDataSourceConfig.MAPPER_LOCATION));return sessionFactory.getObject();}
}

SlaveDataSourceConfig.java


@Configuration
@MapperScan(basePackages = "com.slave.*.Mapper", sqlSessionFactoryRef = "slaveSqlSessionFactory")
public class SlaveDataSourceConfig {static String MAPPER_LOCATION = "classpath*:slaveMapper/*Mapper.xml";/*** 配置数据源* @return*/@Bean(name = "slaveDataSource")@ConfigurationProperties(prefix = "spring.datasource.slave")public DataSource slaveDataSource() {return new DruidDataSource();}/*** 事务管理器*/@Bean(name = "slaveTransactionManager")public DataSourceTransactionManager slaveTransactionManager() {return new DataSourceTransactionManager(slaveDataSource());}/*** 会话工厂*/@Bean(name = "slaveSqlSessionFactory")public SqlSessionFactory slaveSqlSessionFactory(@Qualifier("slaveDataSource") DataSource slaveDataSource) throws Exception {final SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();sessionFactory.setDataSource(slaveDataSource);sessionFactory.setMapperLocations(new PathMatchingResourcePatternResolver().getResources(SlaveDataSourceConfig.MAPPER_LOCATION));return sessionFactory.getObject();}
}

如果想打印Master数据源的sql日志,修改SqlSessionFactory,添加sql打印配置,slave同理。

/*** 会话工厂*/@Bean(name = "slaveSqlSessionFactory")public SqlSessionFactory slaveSqlSessionFactory(@Qualifier("slaveDataSource") DataSource slaveDataSource) throws Exception {final SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();sessionFactory.setDataSource(slaveDataSource);sessionFactory.setMapperLocations(new PathMatchingResourcePatternResolver().getResources(SlaveDataSourceConfig.MAPPER_LOCATION));MybatisConfiguration configuration = new MybatisConfiguration();configuration.setMapUnderscoreToCamelCase(true);// 配置打印sql语句configuration.setLogImpl(StdOutImpl.class);sessionFactory.setConfiguration(configuration);return sessionFactory.getObject();}

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

相关文章:

  • 【WinForms 窗体】常见的“陷阱”
  • Android readelf 工具查找函数符号
  • MySQL-索引回顾
  • 重新认识Elasticsearch-一体化矢量搜索引擎
  • 【附源码】基于SSM框架的房屋租赁系统的设计与实现
  • [SpringBoot]如何在一个普通类中获取一个Bean
  • [ERROR] 不再支持目标选项 5。请使用 7 或更高版本
  • EasyMR:为 AI 未来赋能,打造弹性大数据引擎的革命
  • C //练习 4-10 另一种方法是通过getline函数读入整个输入行,这种情况下可以不使用getch与ungetch函数。请运用这一方法修改计算器程序。
  • 竞赛保研 基于深度学习的行人重识别(person reid)
  • Ncast盈可视 高清智能录播系统 IPSetup.php信息泄露+RCE漏洞复现(CVE-2024-0305)
  • GO语言Context的作用
  • 金和OA C6 upload_json 任意文件上传漏洞
  • 大模型学习第四课
  • Code Runner使用外部控制台,运行结束后等待用户输入
  • IC设计的前端和后端是如何区分的?
  • Unity WebView 中文输入支持
  • x-cmd pkg | trdsql - 能对 CSV、LTSV、JSON 和 TBLN 执行 SQL 查询的工具
  • Camunda Spin
  • strlen/Memcpy_s/strncasecmp
  • 水经微图安卓版APP正式上线!
  • 数据结构第十二弹---堆的应用
  • [NSSRound#3 Team]This1sMysql
  • Android 通知简介
  • QT开发 2024最新版本优雅的使用vscode开发QT
  • Redis性能大挑战:深入剖析缓存抖动现象及有效应对的战术指南
  • 基于SpringBoot的教学管理系统
  • 机器学习之独热编码(One-Hot)
  • IIS+SDK+VS2010+SP1+SQL server2012全套工具包及安装教程
  • 【昕宝爸爸小模块】HashMap用在并发场景存在的问题