1. 首页
  2. 软件开发
  3. JAVA
  4. [AIGC] Spring Boot 整合 ClickHouse:优雅使用的指南

[AIGC] Spring Boot 整合 ClickHouse:优雅使用的指南

  • 发布于 2024-08-16
  • 0 次阅读

本文由 简悦 SimpRead 转码, 原文地址 blog.csdn.net

在大数据处理的场景中,ClickHouse 的极高效率和强大功能使其在众多数据库系统中脱领而出。而 Spring Boot 作为流行的 Java 框架,与 ClickHouse 的结合,将使得数据分析如虎添翼。

文章目录

接下来,我会教你如何在 Spring Boot 环境中优雅地接入 ClickHouse。

1. 添加依赖

首先,我们需要在项目的pom.xml中添加 ClickHouse 的 JDBC 依赖:

<dependency>
    <groupId>ru.yandex.clickhouse</groupId>
    <artifactId>clickhouse-jdbc</artifactId>
    <version>0.2.4</version>
</dependency>

这个依赖将引入 ClickHouse 和 Java 进行交互需要的 JDBC 驱动。

2. 配置连接

然后,我们需要在application.properties或者application.yml文件中进行相关配置:

spring.datasource.clickhouse.jdbc-url=jdbc:clickhouse://localhost:8123/default
spring.datasource.clickhouse.username=default
spring.datasource.clickhouse.password=
spring.datasource.clickhouse.driver-class-name=ru.yandex.clickhouse.ClickHouseDriver

这里配置了连接 ClickHouse 所需的 JDBC URL、用户名、密码和驱动类。

3. 创建连接工厂

创建 ConnectionFactory 类来生成连接,代码如下:

@Autowired
private Environment env;

@Value("${spring.datasource.clickhouse.jdbc-url}")
private String url;

@Value("${spring.datasource.clickhouse.username}")
private String username;

@Value("${spring.datasource.clickhouse.password}")
private String password;

@Value("${spring.datasource.clickhouse.driver-class-name}")
private String driverClassName;

@Bean(name = "clickHouseDataSource")
@Primary
public DataSource clickHouseDataSource(){
      return DataSourceBuilder.create()
                    .driverClassName(driverClassName)
                    .url(url)
                    .username(username)
                    .password(password)
                    .build();
}

创建 JdbcTemplate,便于后续操作数据库:

@Bean(name = "clickhouseJdbcTemplate")
public JdbcTemplate clickhouseJdbcTemplate(@Qualifier("clickHouseDataSource") DataSource dataSource) {
    return new JdbcTemplate(dataSource);
}

4. 执行 SQL 操作

完成以上步骤后,就可以在 Spring Boot 中使用 JdbcTemplate 来执行 SQL 操作了。示例如下:

@Autowired
private JdbcTemplate clickhouseJdbcTemplate;

public void test() {
    String sql = "SELECT count(*) FROM my_table";
    Long count = clickhouseJdbcTemplate.queryForObject(sql, Long.class);
    System.out.println(count);
}

这样,我们就完成了 Spring Boot 应用对 ClickHouse 数据库的接入。之后就可以像操作其他数据库一样,通过 JdbcTemplate 执行 SQL 查询、数据插入、修改和删除等操作了。

结语:ClickHouse 和 Spring Boot 的结合,使得我们在使用简单的 Spring Boot 编程模式的同时,也能享受到 ClickHouse 在大数据处理中带来的强大能力。