SpringBoot集成ClickHouse,含集成kerberos认证

需求:项目中要使用ClickHouse做数据库。

具体实现:

1,在pom.xml中添加clickhouse依赖

bash 复制代码
<!-- https://mvnrepository.com/artifact/com.clickhouse/clickhouse-jdbc -->
<dependency>
    <groupId>com.clickhouse</groupId>
    <artifactId>clickhouse-jdbc</artifactId>
    <version>0.3.2</version>
</dependency>

2, 配置文件中添加clickhouse的配置属性:

bash 复制代码
spring:
  datasource:
    clickhouse:
      driverClassName: ru.yandex.clickhouse.ClickHouseDirver
      url: jdbc:clickhouse:IP:端口号/数据库
      user: 用户名
      password: 密码

#这部分配置用于kerberos认证
clickhouse:
  security:
    enabled: true
  isMachineUser: false

3,配置Clickhouse连接

bash 复制代码
@Configuration
public class ClickHouseConfig {
	@Value("{spring.datasource.clickhouse.url}")
	private String clickhouseUrl;
	@Value("{spring.datasource.clickhouse.user}")
	private String clickhouseUser;
	@Value("{spring.datasource.clickhouse.password}")
	private String clickhousePassword;
	@Value("{clickhouse.seurity.enabled}")
	private Boolean isSecurity;
	@Value("{clickhouse.isMachineUser}")
	private Boolean isMachineUser;
	
	@Bean
	public DataSource dataSource() {
		ClickHouseProperties clickHouseProperties = new ClickHouseProperties();
		clickHouseProperties .setSocketTimeout(60000);

		//下面三行用于开启kerberos认证
		if(isSecurity & isMachineUser) {
			clickHouseProperties.setMachineUser(true);
			clickHouseProperties.setMachineUserKeytabPath(System.getProperty("user.dir") + File.separator + "src" + File.separator + "main" + File.separator + "resources" + File.separator + "user.keytab");
		}
		clickHouseProperties.setSsl(true);
		clickHouseProperties.setSslMode("none");
		clickHouseProperties.setUser(clickhouseUser);
		clickHouseProperties.setPassword(clickhousePassword);
		ClickHouseDataSource clickHouseDataSource = new ClickHouseDataSource (clickhouseUrl, clickHouseProperties);
		return clickHouseDataSource;
	}
}

4,实现具体的Mapper。

其他的操作就跟mysql的操作一致了。

注意:clickhouse跟mysql的SQL语法不一致。

相关推荐
Wang's Blog2 小时前
Java框架快速入门: Spring Security+OAuth2之JWT核心概念与实战
java·spring·log4j
行百里er3 小时前
Spring Insight 里如何画出服务拓扑
spring boot·spring cloud·监控
Wang's Blog3 小时前
Java框架快速入门: Spring Security+OAuth2之核心角色与授权流程
java·spring·github
Wang's Blog3 小时前
Java框架快速入门: Spring Security+OAuth2之RBAC与角色分层实践
java·网络·spring
liangsheng_g7 小时前
Spring事务传播行为分派与挂起恢复源码实战
数据库·sql·spring
麻瓜code8 小时前
【Agent】从 0 手写智能体框架:ReAct + ToolCall 分层设计
人工智能·spring
小坏讲微服务8 小时前
Spring AI 高频面试题20道
java·spring·ai·agent·springai
Bs_MoneyMagnet8 小时前
基于springboot+vue的会议室预约管理系统的设计与实现 源码+文档
java·vue.js·spring boot·后端·spring·毕业设计·计算机毕业设计
Bs_MoneyMagnet8 小时前
基于springboot+vue的茶铺管理系统的设计与实现 源码+文档
java·vue.js·spring boot·后端·spring·毕业设计·计算机毕业设计
她说..8 小时前
RabbitMQ 使用场景详解
java·spring boot·后端·spring·rabbitmq·java-rabbitmq