天天看点

SpringBoot多数据源使用impala连接

SpringBoot 2.0 + Impala 多数据源 JDBCTemplate SpringBoot 2.0 + Impala 多数据源 Named

SpringBoot 配置多数据源(Hikari连接池)连接Impala

注释:

Impala:

SpringBoot使用默认的Hikari连接池,连接Impala

增加依赖

<!--数据库连接池-->

<dependency>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-jdbc</artifactId>

</dependency>

<artifactId>spring-boot-configuration-processor</artifactId>

<optional>true</optional>

<!-- Impala start -->

<!-- 有可能下载不到该Jar, 可以到该地址下载相应版本:https://www.cloudera.com/downloads/connectors/impala/jdbc/2-6-3.html -->

<!-- https://mvnrepository.com/artifact/com.cloudera/ImpalaJDBC41 -->

<groupId>com.cloudera</groupId>

<artifactId>ImpalaJDBC41</artifactId>

<version>${impala.version}</version>

<!-- Impala end -->

配置application.yml文件

该配置文件为多环境配置,可以参考 SpringBoot多环境配置

server:

port: 7001

spring:

profiles:

active: dev

servlet:

multipart:

enabled: true

mvc:

view:

prefix: /

suffix: .html

favicon:

enabled: false

logback:

name: template

---

# developer enviroment

profiles: dev

datasource:

impala:

driver-class-name: com.cloudera.impala.jdbc41.Driver

jdbc-url: jdbc:impala://xx:21050/default

oracle:

first:

driver-class-name: oracle.jdbc.OracleDriver

jdbc-url: jdbc:oracle:thin:@//xx:1521/db

username: xx

password: xx

profiles: test

profiles: prod

多数据源连接配置类

项目目录结构

src

├───main

│ ├───java

│ │ └───com

│ │ └───template

│ │ ├───common # 公共部分

│ │ ├───config # 配置、数据源

│ │ ├───domain # DO、DTO、VO

│ │ ├───repository # 数据库访问层

│ │ ├───service # 逻辑层

│ │ │ └───impl # 逻辑具体实现

│ │ ├───util # 工具类

│ │ └───web # api 接口

│ └───resources

│ ├───static # 静态资源文件

│ │ └───js # 页面依赖的javascript 文件

│ └───templates # 页面模板文件

└───test

└───java

└───com

└───template

├───config

└───repository

多数据源配置类

package com.template.config;

import javax.sql.DataSource;

import org.springframework.beans.factory.annotation.Qualifier;

import org.springframework.boot.context.properties.ConfigurationProperties;

import org.springframework.boot.jdbc.DataSourceBuilder;

import org.springframework.context.annotation.Bean;

import org.springframework.context.annotation.Configuration;

import org.springframework.context.annotation.Primary;

import org.springframework.jdbc.core.JdbcTemplate;

import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate;

import com.zaxxer.hikari.HikariDataSource;

@Configuration

public class HikariDataSourceConfig {

@Primary

@Bean(name = "impalaDataSource")

@Qualifier(value = "impalaDataSource")

@ConfigurationProperties(prefix = "spring.datasource.impala")

public DataSource primaryDataSource() {

return DataSourceBuilder.create().type(HikariDataSource.class).build();

}

@Bean(name = "jdbcTemplateImpala")

public JdbcTemplate jdbcTemplateImpala(@Qualifier("impalaDataSource") DataSource dataSource) {

return new JdbcTemplate(dataSource);

@Bean(name = "namedJdbcTemplateImpala")

public NamedParameterJdbcTemplate namedJdbcTemplateImpala(

@Qualifier("impalaDataSource") DataSource dataSource) {

return new NamedParameterJdbcTemplate(dataSource);

@Bean(name = "secondOracleDataSource")

@Qualifier(value = "secondOracleDataSource")

@ConfigurationProperties(prefix = "spring.datasource.oracle.first")

public DataSource firstOracleDataSource() {

@Bean(name = "jdbcTemplateOracle1")

public JdbcTemplate jdbcTemplateOracle1(

@Qualifier("secondOracleDataSource") DataSource dataSource) {

}

测试类

import org.junit.Test;

import org.junit.runner.RunWith;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.boot.test.context.SpringBootTest;

import org.springframework.test.context.junit4.SpringRunner;

import lombok.extern.slf4j.Slf4j;

@Slf4j

@SpringBootTest

@RunWith(SpringRunner.class)

public class HikariDataSourceConfigTest {

@Autowired

private JdbcTemplate jdbcTemplateImpala;

@Test

public void testImpalaJdbcTemplate() {

log.info("impala jdbctemplate connection start:");

String sql = "select count(*) from table";

Integer count = jdbcTemplateImpala.queryForObject(sql, Integer.class);

log.info("impalaJdbcTemplate query result :\t" + count);

上一篇: impala基础