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多数据源的更多相关文章

  1. Spring Boot集成Mybatis双数据源

    这里用到了Spring Boot + Mybatis + DynamicDataSource配置动态双数据源,可以动态切换数据源实现数据库的读写分离. 添加依赖 加入Mybatis启动器,这里添加了D ...

  2. Spring Boot集成Jasypt安全框架

    Jasypt安全框架提供了Spring的集成,主要是实现 PlaceholderConfigurerSupport类或者其子类. 在Sring 3.1之后,则推荐使用PropertySourcesPl ...

  3. Quartz与Spring Boot集成使用

    上次自己搭建Quartz已经是几年前的事了,这次项目中需要定时任务,需要支持集群部署,想到比较轻量级的定时任务框架就是Quartz,于是来一波. 版本说明 通过搜索引擎很容易找到其官网,来到Docum ...

  4. Spring Boot 集成 FreeMarker 详解案例(十五)

    一.Springboot 那些事 SpringBoot 很方便的集成 FreeMarker ,DAO 数据库操作层依旧用的是 Mybatis,本文将会一步一步到来如何集成 FreeMarker 以及配 ...

  5. Spring boot 与mybatis 多数据源问题

    https://www.cnblogs.com/ityouknow/p/6102399.html Spring Boot 集成Mybatis实现多数据源 https://blog.csdn.net/m ...

  6. 81. Spring Boot集成JSP疑问【从零开始学Spring Boot】

    [原创文章,转载请注明出处] 针对文章: ()Spring Boot 添加JSP支持[从零开始学Spring Boot] 有网友提了这么一些疑问: 1.Spring Boot使用jsp时,仍旧可以打成 ...

  7. (37)Spring Boot集成EHCache实现缓存机制【从零开始学Spring Boot】

    [本文章是否对你有用以及是否有好的建议,请留言] 写后感:博主写这么一系列文章也不容易啊,请评论支持下. 如果看过我之前(35)的文章这一篇的文章就会很简单,没有什么挑战性了. 那么我们先说说这一篇文 ...

  8. (35)Spring Boot集成Redis实现缓存机制【从零开始学Spring Boot】

    [本文章是否对你有用以及是否有好的建议,请留言] 本文章牵涉到的技术点比较多:Spring Data JPA.Redis.Spring MVC,Spirng Cache,所以在看这篇文章的时候,需要对 ...

  9. MyBatis初级实战之一:Spring Boot集成

    欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...

  10. 【SpringBoot】Spring Boot 集成SwaggerAPI

    Spring Boot 集成SwaggerAPI 文章目录 Spring Boot 集成SwaggerAPI Swagger 添加依赖 配置类 config 控制类 controller 接口测试 页 ...

随机推荐

  1. RabbitMQ 多消费者 使用单信道和多信道区别

    RabbitMQ 多个消费者共用一个信道实例 与 每个消费者使用不同的信道实例 区别: 1. 多个消费者共用一个信道实例:这种方式下,多个消费者共享同一个信道实例来进行消息的消费. 优点:这样可以减少 ...

  2. LEA: Improving Sentence Similarity Robustness to Typos Using Lexical Attention Bias 论文阅读

    LEA: Improving Sentence Similarity Robustness to Typos Using Lexical Attention Bias 论文阅读 KDD 2023 原文 ...

  3. 图像处理_Retinex图像增强

    单尺度SSR (Single Scale Retinex) 图像 S ( x , y ) S(x,y) S(x,y)分解为两个不同的图像:反射图像 R ( x , y ) R(x,y) R(x,y), ...

  4. 用Python操控斑马打印机的技术总结

    前言 由于之前产品打印的标签为人工输入,可能存在信息错误且不适合大批量操作.所以我进行了前期的研究和总结,完成了任务,并这里做下技术总结,方便后面的人进行开发. 技术总结 斑马打印机的坑 官网:htt ...

  5. 2023年icpc大学生程序设计竞赛-nhr

    icpc的省赛是在洛阳举办,第一次出省,还是两天,第一次离开郑州去别的城市比赛,心情更多的是激动,非常感谢老师给了这次机会,第一天20号,打完热身赛之后回寝室,和队友一起看了一下去年省赛的题,感觉还是 ...

  6. Linux Crontab 使用单行命令需要注意使用命令的绝对路径

    crontab 中不支持||的写法,但是支持&&所以用 xxx ; [ $? -ne 0] && xxx的格式就没有问题. crontab 中环境变量与shell中不一 ...

  7. Linux 压缩文件用法

    # tar 命令:可以用来压缩或解压缩文件: # 压缩 tar -czvf filename.tar.gz files # 解压缩 tar -xzvf filename.tar.gz # gzip 命 ...

  8. Angular报错:Error: Unknown argument: spec

    解决方案 使用--skip-tests代替 效果展示 可以看到spec.ts消失了 参考链接 https://stackoverflow.com/questions/62228834/angular- ...

  9. 彻底搞懂Vue针对数组和双向绑定(MVVM)的处理方式

    欢迎关注我的博客:https://github.com/wangweianger/myblog Vue内部实现了一组观察数组的变异方法,例如:push(),pop(),shift()等. Object ...

  10. [nginx]防范空主机头

    空主机头防范主要是防止别人恶意将域名解析到服务器IP上. 配置示例 方式一,增加vhost # http的空主机头防范 server { listen 80 default; server_name ...