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

相关推荐
独断万古他化32 分钟前
【SSM开发实战:博客系统】(三)核心业务功能开发与安全加密实现
spring boot·spring·mybatis·博客系统·加密
若鱼19191 小时前
SpringBoot4.0新特性-Observability让生产环境更易于观测
java·spring
Volunteer Technology2 小时前
sentinel基本操作
spring cloud·sentinel
Dragon Wu2 小时前
Spring Security Oauth2.1 授权码模式实现前后端分离的方案
java·spring boot·后端·spring cloud·springboot·springcloud
跳动的梦想家h2 小时前
环境配置 + AI 提效双管齐下
java·vue.js·spring
独断万古他化3 小时前
【Spring 原理】Bean 的作用域与生命周期
java·后端·spring
vx1_Biye_Design4 小时前
基于Spring Boot+Vue的学生管理系统设计与实现-计算机毕业设计源码46223
java·vue.js·spring boot·spring·eclipse·tomcat·maven
vx_Biye_Design4 小时前
基于Spring Boot+vue的湖北旅游景点门票预约平台的设计--毕设附源码29593
java·vue.js·spring boot·spring cloud·servlet·eclipse·课程设计
Hx_Ma164 小时前
SpringBoot数据源自动管理
java·spring boot·spring
java1234_小锋4 小时前
Java高频面试题:Spring和SpringBoot的关系和区别?
java·spring boot·spring