SpringBoot配置Clickhouse的示例代碼
更新時(shí)間:2022年02月18日 14:36:23 作者:元宇宙-Metaverse
這篇文章主要介紹了SpringBoot配置Clickhouse的示例代碼,代碼簡(jiǎn)單易懂,對(duì)大家的學(xué)習(xí)或工作具有一定的參考價(jià)值,需要的朋友可以參考下
一、加入clickhouse jar包依賴(lài)
<dependency>
<groupId>ru.yandex.clickhouse</groupId>
<artifactId>clickhouse-jdbc</artifactId>
<version>0.1.53</version>
</dependency>二、配置Clickhouse數(shù)據(jù)庫(kù)連接屬性配置文件,clickhouse默認(rèn)沒(méi)有密碼
spring:
datasource:
clickhouse:
address: jdbc:clickhouse://127.0.0.1:8123
username: default
password:
db: system
socketTimeout: 600000三、編寫(xiě)Clickhouse數(shù)據(jù)庫(kù)連接操作工具類(lèi)
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import ru.yandex.clickhouse.ClickHouseConnection;
import ru.yandex.clickhouse.ClickHouseDataSource;
import ru.yandex.clickhouse.settings.ClickHouseProperties;
import java.sql.*;
import java.util.*;
@Slf4j
@Component
public class ClickHouseConfig {
private static String clickhouseAddress;
private static String clickhouseUsername;
private static String clickhousePassword;
private static String clickhouseDB;
private static Integer clickhouseSocketTimeout;
@Value("${spring.datasource.clickhouse.address}")
public void setClickhouseAddress(String address) {
ClickHouseConfig.clickhouseAddress = address;
}
@Value("${spring.datasource.clickhouse.username}")
public void setClickhouseUsername(String username) {
ClickHouseConfig.clickhouseUsername = username;
@Value("${spring.datasource.clickhouse.password}")
public void setClickhousePassword(String password) {
ClickHouseConfig.clickhousePassword = password;
@Value("${spring.datasource.clickhouse.db}")
public void setClickhouseDB(String db) {
ClickHouseConfig.clickhouseDB = db;
@Value("${spring.datasource.clickhouse.socketTimeout}")
public void setClickhouseSocketTimeout(Integer socketTimeout) {
ClickHouseConfig.clickhouseSocketTimeout = socketTimeout;
public static Connection getConn() {
ClickHouseConnection conn = null;
ClickHouseProperties properties = new ClickHouseProperties();
properties.setUser(clickhouseUsername);
properties.setPassword(clickhousePassword);
properties.setDatabase(clickhouseDB);
properties.setSocketTimeout(clickhouseSocketTimeout);
ClickHouseDataSource clickHouseDataSource = new ClickHouseDataSource(clickhouseAddress,properties);
try {
conn = clickHouseDataSource.getConnection();
return conn;
} catch (SQLException e) {
e.printStackTrace();
}
return null;
public static List<Map<String,String>> exeSql(String sql){
log.info("cliockhouse 執(zhí)行sql:" + sql);
Connection connection = getConn();
Statement statement = connection.createStatement();
ResultSet results = statement.executeQuery(sql);
ResultSetMetaData rsmd = results.getMetaData();
List<Map<String,String>> list = new ArrayList<>();
while(results.next()){
Map<String,String> row = new HashMap<>();
for(int i = 1;i<=rsmd.getColumnCount();i++){
row.put(rsmd.getColumnName(i),results.getString(rsmd.getColumnName(i)));
}
list.add(row);
}
return list;
}四、是用測(cè)試方法執(zhí)行sql查詢(xún)數(shù)據(jù)

import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
import java.util.List;
import java.util.Map;
@RunWith(SpringRunner.class)
@SpringBootTest
@Slf4j
public class ClickHouseConfigTest {
@Test
public void exeSql() {
log.info("===========測(cè)試開(kāi)始============");
String sql="select cluster,shard_num from clusters";
List<Map<String,String>> result= ClickHouseConfig.exeSql(sql);
log.info("===========查詢(xún)技術(shù)============");
log.info("clickhouse查詢(xún)結(jié)果為:{}",result);
}
}測(cè)試成功

轉(zhuǎn)自:https://www.dianjilingqu.com/
到此這篇關(guān)于SpringBoot配置Clickhouse的文章就介紹到這了,更多相關(guān)SpringBoot配置Clickhouse內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Java使用FilenameFilter查找出目錄下指定后綴的文件示例
這篇文章主要介紹了Java使用FilenameFilter查找出目錄下指定后綴的文件,結(jié)合實(shí)例形式分析了java基于FilenameFilter類(lèi)的文件遍歷、查找相關(guān)操作技巧,需要的朋友可以參考下2019-10-10
JavaWeb實(shí)現(xiàn)RSA+AES混合加密
RSA+AES的混合加密時(shí),AES用于給傳輸?shù)臄?shù)據(jù)加密,然后通過(guò)RSA給AES的秘鑰加密,本文就來(lái)詳細(xì)的介紹一下如何實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的可以了解一下2023-10-10
mybaits-plus?lambdaQuery()?和?lambdaUpdate()?常見(jiàn)的使用方法
MyBatis-Plus是一個(gè)?MyBatis?(opens?new?window)的增強(qiáng)工具,在?MyBatis?的基礎(chǔ)上只做增強(qiáng)不做改變,為簡(jiǎn)化開(kāi)發(fā)、提高效率而生,這篇文章主要介紹了mybaits-plus?lambdaQuery()?和?lambdaUpdate()?比較常見(jiàn)的使用方法,需要的朋友可以參考下2023-01-01
java8新特性之stream的collect實(shí)戰(zhàn)教程
這篇文章主要介紹了java8新特性之stream的collect實(shí)戰(zhàn)教程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-08-08

