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语法不一致。

相关推荐
子一!!16 分钟前
spring基础学习
java·学习·spring
海南java第二人1 小时前
ClickHouse 列式存储深度解析:优点、缺点与选型实战
数据库·clickhouse
摇滚侠2 小时前
SpringBoot 升级,依赖冲突如何解决
java·spring boot·spring
小江的记录本2 小时前
【JVM虚拟机】类加载机制:类加载器、双亲委派模型、好处、破坏双亲委派的场景(附《思维导图》+《面试高频考点清单》)
java·jvm·spring boot·后端·python·spring·面试
李少兄2 小时前
Spring 对象创建范式:依赖注入与直接实例化的边界抉择
java·后端·spring
小马爱打代码3 小时前
Spring源码中的设计模式实战:从理论到源码的深度解析
java·spring·设计模式
Devin~Y3 小时前
智慧物流+AIGC客服Java大厂面试:Spring Boot、Kafka、Redis、JVM与RAG Agent实战
java·jvm·spring boot·redis·spring cloud·kafka·rag
worilb3 小时前
Spring Cloud 学习与实践(4):订单服务开发
spring cloud
明夜之约4 小时前
Spring Transaction 传播机制
java·spring
码语智行5 小时前
Spring Security自定义AuthenticationManager实现手机号/密码双认证
java·后端·spring