spring-boot集成hikari多数据源
maven依赖
<dependency>
<groupId>com.zaxxer</groupId>
<artifactId>HikariCP</artifactId>
<version>4.0.3</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>2.0.4</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.4</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>5.1.4.RELEASE</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<dependency>
<groupId>ru.yandex.clickhouse</groupId>
<artifactId>clickhouse-jdbc</artifactId>
<version>0.3.0</version>
</dependency>
注意:移除spring-boot-starter-jdbc、mybatis-spring-boot-starter依赖
application.yml
spring:
datasource:
tidb:
type: com.zaxxer.hikari.HikariDataSource
driverClassName: com.mysql.jdbc.Driver
jdbcUrl: jdbc:mysql://xxx:4000/dbname?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC&useSSL=false
username: root
password: 'root'
idle-timeout: 60000
maximum-pool-size: 100
minimum-idle: 10
connection-timeout: 120000
max-lifetime: 200000
pool-name: 'tidb-connection-pool'
keepaliveTime: 30000
clickhouse:
type: com.zaxxer.hikari.HikariDataSource
driverClassName: ru.yandex.clickhouse.ClickHouseDriver
jdbcUrl: jdbc:clickhouse://xxxx/xxx?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC&useSSL=false
username: root
password: 'root'
idle-timeout: 60000
maximum-pool-size: 100
minimum-idle: 10
connection-timeout: 30000
max-lifetime: 600000
pool-name: 'clickhouse-connection-pool'
keepaliveTime: 30000
spring-boot代码手动装配
tidb 数据源
@Configuration
@MapperScan(basePackages = "com.demo.das.tidb.mapper", sqlSessionFactoryRef = "tidbSqlSessionFactory")
public class TidbDataSourceConfig {
@Bean
@ConfigurationProperties(prefix = "spring.datasource.tidb")
public HikariConfig tidbConfig() {
return new HikariConfig();
}
@Bean
public HikariDataSource tidbDataSource(HikariConfig tidbConfig) {
HikariDataSource dataSource = new HikariDataSource(tidbConfig);
return dataSource;
}
@Bean
public SqlSessionFactory tidbSqlSessionFactory(HikariDataSource tidbDataSource) throws Exception {
SqlSessionFactoryBean bean = new SqlSessionFactoryBean();
bean.setDataSource(tidbDataSource);
ResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
bean.setConfigLocation(resolver.getResource("classpath:mybatis-config.xml"));
bean.setMapperLocations(resolver.getResources("classpath:mapper/tidb/*.xml"));
bean.setTypeAliasesPackage("com.demo.entity");
return bean.getObject();
}
@Bean("tidbTransactionManger")
public DataSourceTransactionManager tidbTransactionManger(DataSource tidbDataSource) {
return new DataSourceTransactionManager(tidbDataSource);
}
}
clickhouse数据源
@Configuration
@MapperScan(basePackages = "com.demo.das.clickhouse.mapper", sqlSessionFactoryRef = "clickHouseSqlSessionFactory")
public class ClickHouseDataSourceConfig {
@Bean
@ConfigurationProperties(prefix = "spring.datasource.clickhouse")
public HikariConfig clickHouseConfig() {
return new HikariConfig();
}
@Bean
public HikariDataSource clickHouseDataSource(HikariConfig clickHouseConfig) {
HikariDataSource dataSource = new HikariDataSource(clickHouseConfig);
return dataSource;
}
@Bean
public SqlSessionFactory clickHouseSqlSessionFactory(DataSource clickHouseDataSource) throws Exception {
SqlSessionFactoryBean bean = new SqlSessionFactoryBean();
bean.setDataSource(clickHouseDataSource);
ResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
bean.setConfigLocation(resolver.getResource("classpath:mybatis-config.xml"));
bean.setMapperLocations(resolver.getResources("classpath:mapper/clickhouse/*.xml"));
bean.setTypeAliasesPackage("com.demo.entity");
return bean.getObject();
}
}
spring-boot集成hikari多数据源的更多相关文章
- Spring Boot集成Mybatis双数据源
这里用到了Spring Boot + Mybatis + DynamicDataSource配置动态双数据源,可以动态切换数据源实现数据库的读写分离. 添加依赖 加入Mybatis启动器,这里添加了D ...
- Spring Boot集成Jasypt安全框架
Jasypt安全框架提供了Spring的集成,主要是实现 PlaceholderConfigurerSupport类或者其子类. 在Sring 3.1之后,则推荐使用PropertySourcesPl ...
- Quartz与Spring Boot集成使用
上次自己搭建Quartz已经是几年前的事了,这次项目中需要定时任务,需要支持集群部署,想到比较轻量级的定时任务框架就是Quartz,于是来一波. 版本说明 通过搜索引擎很容易找到其官网,来到Docum ...
- Spring Boot 集成 FreeMarker 详解案例(十五)
一.Springboot 那些事 SpringBoot 很方便的集成 FreeMarker ,DAO 数据库操作层依旧用的是 Mybatis,本文将会一步一步到来如何集成 FreeMarker 以及配 ...
- Spring boot 与mybatis 多数据源问题
https://www.cnblogs.com/ityouknow/p/6102399.html Spring Boot 集成Mybatis实现多数据源 https://blog.csdn.net/m ...
- 81. Spring Boot集成JSP疑问【从零开始学Spring Boot】
[原创文章,转载请注明出处] 针对文章: ()Spring Boot 添加JSP支持[从零开始学Spring Boot] 有网友提了这么一些疑问: 1.Spring Boot使用jsp时,仍旧可以打成 ...
- (37)Spring Boot集成EHCache实现缓存机制【从零开始学Spring Boot】
[本文章是否对你有用以及是否有好的建议,请留言] 写后感:博主写这么一系列文章也不容易啊,请评论支持下. 如果看过我之前(35)的文章这一篇的文章就会很简单,没有什么挑战性了. 那么我们先说说这一篇文 ...
- (35)Spring Boot集成Redis实现缓存机制【从零开始学Spring Boot】
[本文章是否对你有用以及是否有好的建议,请留言] 本文章牵涉到的技术点比较多:Spring Data JPA.Redis.Spring MVC,Spirng Cache,所以在看这篇文章的时候,需要对 ...
- MyBatis初级实战之一:Spring Boot集成
欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...
- 【SpringBoot】Spring Boot 集成SwaggerAPI
Spring Boot 集成SwaggerAPI 文章目录 Spring Boot 集成SwaggerAPI Swagger 添加依赖 配置类 config 控制类 controller 接口测试 页 ...
随机推荐
- RabbitMQ 多消费者 使用单信道和多信道区别
RabbitMQ 多个消费者共用一个信道实例 与 每个消费者使用不同的信道实例 区别: 1. 多个消费者共用一个信道实例:这种方式下,多个消费者共享同一个信道实例来进行消息的消费. 优点:这样可以减少 ...
- LEA: Improving Sentence Similarity Robustness to Typos Using Lexical Attention Bias 论文阅读
LEA: Improving Sentence Similarity Robustness to Typos Using Lexical Attention Bias 论文阅读 KDD 2023 原文 ...
- 图像处理_Retinex图像增强
单尺度SSR (Single Scale Retinex) 图像 S ( x , y ) S(x,y) S(x,y)分解为两个不同的图像:反射图像 R ( x , y ) R(x,y) R(x,y), ...
- 用Python操控斑马打印机的技术总结
前言 由于之前产品打印的标签为人工输入,可能存在信息错误且不适合大批量操作.所以我进行了前期的研究和总结,完成了任务,并这里做下技术总结,方便后面的人进行开发. 技术总结 斑马打印机的坑 官网:htt ...
- 2023年icpc大学生程序设计竞赛-nhr
icpc的省赛是在洛阳举办,第一次出省,还是两天,第一次离开郑州去别的城市比赛,心情更多的是激动,非常感谢老师给了这次机会,第一天20号,打完热身赛之后回寝室,和队友一起看了一下去年省赛的题,感觉还是 ...
- Linux Crontab 使用单行命令需要注意使用命令的绝对路径
crontab 中不支持||的写法,但是支持&&所以用 xxx ; [ $? -ne 0] && xxx的格式就没有问题. crontab 中环境变量与shell中不一 ...
- Linux 压缩文件用法
# tar 命令:可以用来压缩或解压缩文件: # 压缩 tar -czvf filename.tar.gz files # 解压缩 tar -xzvf filename.tar.gz # gzip 命 ...
- Angular报错:Error: Unknown argument: spec
解决方案 使用--skip-tests代替 效果展示 可以看到spec.ts消失了 参考链接 https://stackoverflow.com/questions/62228834/angular- ...
- 彻底搞懂Vue针对数组和双向绑定(MVVM)的处理方式
欢迎关注我的博客:https://github.com/wangweianger/myblog Vue内部实现了一组观察数组的变异方法,例如:push(),pop(),shift()等. Object ...
- [nginx]防范空主机头
空主机头防范主要是防止别人恶意将域名解析到服务器IP上. 配置示例 方式一,增加vhost # http的空主机头防范 server { listen 80 default; server_name ...