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

SpringBoot实现mysql与clickhouse多数据源

一、我们来实现一个mysql与clickhouse多数据源配置

二、数据源配置

# 指定服务名称
spring:application:name: demobigdatadatasource:driver-class-name: com.mysql.jdbc.Driverurl: jdbc:mysql://127.0.0.1:3306/db?createDatabaseIfNotExist=true&useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai&useSSL=false&zeroDateTimeBehavior=convertToNull&allowMultiQueries=true&useAffectedRows=true&allowPublicKeyRetrieval=trueusername: rootpassword: 123456type: com.alibaba.druid.pool.DruidDataSourcedruid:# 数据源  clickhouseclickhouse:driverClassName: com.clickhouse.jdbc.ClickHouseDriverurl: jdbc:clickhouse://192.168.42.142:8123/bigdatausername: defaultpassword: 123456initialSize: 10maxActive: 100minIdle: 10maxWait: 6000

三、MysqlDuridConfig


import javax.sql.DataSource;import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
import org.springframework.core.io.Resource;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;import com.alibaba.druid.pool.DruidDataSource;@Configuration
@MapperScan(basePackages = "org.demoflowable.mysql.dao")
public class MysqlDuridConfig {@javax.annotation.ResourceMysqlJdbcParamConfig mysqlJdbcParamConfig;@Bean("mysqlDataSource")@Primarypublic DataSource mysqlDataSource() {DruidDataSource datasource = new DruidDataSource();datasource.setUrl(mysqlJdbcParamConfig.getUrl());datasource.setDriverClassName(mysqlJdbcParamConfig.getDriverClassName());datasource.setUsername(mysqlJdbcParamConfig.getUsername());datasource.setPassword(mysqlJdbcParamConfig.getPassword());return datasource;}@Bean("mysqlTransactionManager")@Primarypublic DataSourceTransactionManager getDataSourceTransactionManager(@Qualifier("mysqlDataSource") DataSource dataSource) {return new DataSourceTransactionManager(dataSource);}@Bean("sqlSessionFactory")@Primarypublic SqlSessionFactory getSqlSessionManager(@Qualifier("mysqlDataSource") DataSource dataSource)throws Exception {SqlSessionFactoryBean bean = new SqlSessionFactoryBean();bean.setDataSource(dataSource);Resource[] resource = new PathMatchingResourcePatternResolver().getResources("classpath:META-INF/mapper/mysql/*.xml");bean.setMapperLocations(resource);Resource configLocation=new PathMatchingResourcePatternResolver().getResource("classpath:META-INF/spring/mybatis-config.xml");bean.setConfigLocation(configLocation);return bean.getObject();}
}

四、MysqlJdbcParamConfig


import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;@Component
@ConfigurationProperties(prefix = "spring.datasource")
public class MysqlJdbcParamConfig {private String driverClassName;private String url;private String username;private String password;public String getDriverClassName() {return driverClassName;}public void setDriverClassName(String driverClassName) {this.driverClassName = driverClassName;}public String getUrl() {return url;}public void setUrl(String url) {this.url = url;}public String getUsername() {return username;}public void setUsername(String username) {this.username = username;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}
}

五、ClickHouseJdbcParamConfig


import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;@Component
@ConfigurationProperties(prefix = "spring.datasource.druid.clickhouse")
public class ClickHouseJdbcParamConfig {private String driverClassName;private String url;private Integer initialSize;private Integer maxActive;private Integer minIdle;private Integer maxWait;private String username;private String password;public String getDriverClassName() {return driverClassName;}public void setDriverClassName(String driverClassName) {this.driverClassName = driverClassName;}public String getUrl() {return url;}public void setUrl(String url) {this.url = url;}public Integer getInitialSize() {return initialSize;}public void setInitialSize(Integer initialSize) {this.initialSize = initialSize;}public Integer getMaxActive() {return maxActive;}public void setMaxActive(Integer maxActive) {this.maxActive = maxActive;}public Integer getMinIdle() {return minIdle;}public void setMinIdle(Integer minIdle) {this.minIdle = minIdle;}public Integer getMaxWait() {return maxWait;}public void setMaxWait(Integer maxWait) {this.maxWait = maxWait;}public String getUsername() {return username;}public void setUsername(String username) {this.username = username;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}
}

六、ClickHouseConfig 


import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.io.Resource;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;import com.alibaba.druid.pool.DruidDataSource;@Configuration
@ConfigurationProperties
@MapperScan(basePackages = "org.demoflowable.clickhouse.dao", sqlSessionFactoryRef = "clickhouseSqlSessionFactory")
public class ClickHouseConfig {@javax.annotation.Resourceprivate ClickHouseJdbcParamConfig jdbcParamConfig;@Bean("clickDataSource")public DataSource dataSource() {DruidDataSource datasource = new DruidDataSource();datasource.setUrl(jdbcParamConfig.getUrl());datasource.setDriverClassName(jdbcParamConfig.getDriverClassName());datasource.setInitialSize(jdbcParamConfig.getInitialSize());datasource.setMinIdle(jdbcParamConfig.getMinIdle());datasource.setMaxActive(jdbcParamConfig.getMaxActive());datasource.setMaxWait(jdbcParamConfig.getMaxWait());datasource.setUsername(jdbcParamConfig.getUsername());datasource.setPassword(jdbcParamConfig.getPassword());return datasource;}@Bean("clickTransactionManager")public DataSourceTransactionManager getDataSourceTransactionManager(@Qualifier("clickDataSource") DataSource dataSource) {return new DataSourceTransactionManager(dataSource);}@Bean("clickhouseSqlSessionFactory")public SqlSessionFactory getSqlSessionManager(@Qualifier("clickDataSource") DataSource dataSource)throws Exception {SqlSessionFactoryBean bean = new SqlSessionFactoryBean();bean.setDataSource(dataSource);Resource[] resource = new PathMatchingResourcePatternResolver().getResources("classpath:META-INF/mapper/clickhouse/*.xml");bean.setMapperLocations(resource);return bean.getObject();}
}

七、启动类Application


import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;/*** @Description: 启动类*/
@SpringBootApplication
@ComponentScan({ "org.demoflowable" })
public class Application {/*** @Title: main* @Description: 启动类* @param args* @date 2023-11-08 01:49:23*/public static void main(String[] args) {SpringApplication.run(Application.class, args);}}

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

相关文章:

  • 为什么是LangChain?
  • Labview的分支判断
  • 蓝桥杯双周赛算法心得——串门(双链表数组+双dfs)
  • mysql 配置主从复制 及 Slave_SQL_Running = no问题排查
  • 再获5G RedCap能力认证!宏电5G RedCap工业智能网关通过中国联通5G物联网OPENLAB开放实验室测试验证
  • 牛客--汽水瓶python
  • TSINGSEE智能分析网关V4车辆结构化数据检测算法及车辆布控
  • git解决冲突的方法。
  • [MT8766][Android12] 取消WIFI热点超过10分钟没有连接自动关闭设定
  • 智能中仍存在着许多未被发现的逻辑
  • 基于公共业务提取的架构演进——外部依赖防腐篇
  • uniapp小程序接入腾讯云【增强版人脸核身接入】
  • Sass 最基础的语法
  • 2023年11月数据库流行度最新排名
  • JavaEE-部署项目到服务器
  • 计算机网络期末复习-Part1
  • Redis系列-Redis过期策略以及内存淘汰机制【6】
  • 多语言翻译软件 Mate Translate mac中文版特色功能
  • Python GUI标准库tkinter实现与记事本相同菜单的文本编辑器(一)
  • Decimal.ToString()堆栈溢出异常
  • com.genuitec.eclipse.springframework.springnature
  • wangeditor富文本编辑器的使用(vue)
  • 物联网水表有什么弊端吗?
  • 安卓 车轮视图 WheelView kotlin
  • 升级Redisson版本兼容问题
  • 前端框架Bootstrap
  • Flink SQL TopN语句详解
  • k8s之数据卷
  • 服务器网络
  • YOLOv8-seg 分割代码详解(一)Predict