采用springboot 2.7.10来操作clickhouse

1、采用springboot与clickhouse结合,其实和操作mysql,oracle区别不大。直接上代码开干

2、所采用的环境

jdk1.8

springboot 2.7.10

clickhouse 22.8.3.13

clickhouse 0.5.0

3、项目的pom.xml文件

<dependency>
				<groupId>com.clickhouse</groupId>
				<artifactId>clickhouse-jdbc</artifactId>
				<version>0.5.0</version>
			</dependency>
			<dependency>
				<groupId>com.clickhouse</groupId>
				<artifactId>clickhouse-client</artifactId>
				<version>0.5.0</version>
			</dependency>
			<dependency>
				<groupId>com.clickhouse</groupId>
				<artifactId>clickhouse-http-client</artifactId>
				<version>0.5.0</version>
			</dependency>

			<dependency>
				<groupId>org.apache.httpcomponents.client5</groupId>
				<artifactId>httpclient5</artifactId>
				<version>5.2.1</version>
			</dependency>
			<dependency>
				<groupId>org.apache.httpcomponents.client5</groupId>
				<artifactId>httpclient5-fluent</artifactId>
				<version>5.1.3</version>
			</dependency>

4、application.yml配置

spring:
  application:
    name: demobigdata
  profiles:
    active: mybatis
  datasource:
    type: com.alibaba.druid.pool.DruidDataSource
    druid:
      # 数据源  clickhouse
      clickhouse:
        driverClassName: com.clickhouse.jdbc.ClickHouseDriver
        url: jdbc:clickhouse://192.168.42.142:8123/bigdata
        username: default
        password: 123456
        initialSize: 10
        maxActive: 100
        minIdle: 10
        maxWait: 6000

5、application-mybatis.yml配置

#mybatis的相关配置
mybatis:
  #mapper配置文件
  type-aliases-package: org.demoflowable.pojo
  mapper-locations: classpath:META-INF/mapper/clickhouse/*.xml
  config-location: classpath:META-INF/spring/mybatis-config.xml

6、ClickHouseJdbcParamConfig


import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

@Component
@ConfigurationProperties(prefix = "spring.datasource.druid.clickhouse")
public class ClickHouseJdbcParamConfig {

	private String driverClassName;
	private String url;
	private Integer initialSize;
	private Integer maxActive;
	private Integer minIdle;
	private Integer maxWait;

	private String username;
	private String password;

	public String getDriverClassName() {
		return driverClassName;
	}

	public void setDriverClassName(String driverClassName) {
		this.driverClassName = driverClassName;
	}

	public String getUrl() {
		return url;
	}

	public void setUrl(String url) {
		this.url = url;
	}

	public Integer getInitialSize() {
		return initialSize;
	}

	public void setInitialSize(Integer initialSize) {
		this.initialSize = initialSize;
	}

	public Integer getMaxActive() {
		return maxActive;
	}

	public void setMaxActive(Integer maxActive) {
		this.maxActive = maxActive;
	}

	public Integer getMinIdle() {
		return minIdle;
	}

	public void setMinIdle(Integer minIdle) {
		this.minIdle = minIdle;
	}

	public Integer getMaxWait() {
		return maxWait;
	}

	public void setMaxWait(Integer maxWait) {
		this.maxWait = maxWait;
	}

	public String getUsername() {
		return username;
	}

	public void setUsername(String username) {
		this.username = username;
	}

	public String getPassword() {
		return password;
	}

	public void setPassword(String password) {
		this.password = password;
	}
}

 7、ClickHouseConfig


import javax.sql.DataSource;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import com.alibaba.druid.pool.DruidDataSource;

@Configuration
public class ClickHouseConfig {

	@javax.annotation.Resource
	private ClickHouseJdbcParamConfig jdbcParamConfig;

	@Bean
	public DataSource dataSource() {
		DruidDataSource datasource = new DruidDataSource();
		datasource.setUrl(jdbcParamConfig.getUrl());
		datasource.setDriverClassName(jdbcParamConfig.getDriverClassName());
		datasource.setInitialSize(jdbcParamConfig.getInitialSize());
		datasource.setMinIdle(jdbcParamConfig.getMinIdle());
		datasource.setMaxActive(jdbcParamConfig.getMaxActive());
		datasource.setMaxWait(jdbcParamConfig.getMaxWait());
		datasource.setUsername(jdbcParamConfig.getUsername());
		datasource.setPassword(jdbcParamConfig.getPassword());
		return datasource;
	}

}

8、UserInfo 


public class UserInfo {

	private Integer id;

	private String userName;

	private String passWord;

	private String phone;

	private String createDay;

	public Integer getId() {
		return id;
	}

	public void setId(Integer id) {
		this.id = id;
	}

	public String getUserName() {
		return userName;
	}

	public void setUserName(String userName) {
		this.userName = userName;
	}

	public String getPassWord() {
		return passWord;
	}

	public void setPassWord(String passWord) {
		this.passWord = passWord;
	}

	public String getPhone() {
		return phone;
	}

	public void setPhone(String phone) {
		this.phone = phone;
	}

	public String getCreateDay() {
		return createDay;
	}

	public void setCreateDay(String createDay) {
		this.createDay = createDay;
	}
}

 

9、UserInfoMapper


import java.util.List;

import org.apache.ibatis.annotations.Param;
import org.demoflowable.pojo.user.po.UserInfo;

public interface UserInfoMapper {

	void saveData(UserInfo userInfo);

	UserInfo selectById(@Param("id") Integer id);

	List<UserInfo> selectList();
}

10、UserInfoService 


import java.util.List;

import javax.annotation.Resource;

import org.demoflowable.clickhouse.dao.user.UserInfoMapper;
import org.demoflowable.pojo.user.po.UserInfo;
import org.springframework.stereotype.Service;

@Service
public class UserInfoService {

	@Resource
	private UserInfoMapper userInfoMapper;

	public void saveData(UserInfo userInfo) {
		userInfoMapper.saveData(userInfo);
	}

	public UserInfo selectById(Integer id) {
		return userInfoMapper.selectById(id);
	}

	public List<UserInfo> selectList() {
		return userInfoMapper.selectList();
	}

}

11、UserInfoController


import java.util.List;

import javax.annotation.Resource;

import org.demoflowable.pojo.user.po.UserInfo;
import org.demoflowable.service.user.UserInfoService;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class UserInfoController {

	@Resource
	private UserInfoService userInfoService;

	/**
	 * 保存
	 * @return
	 */
	@GetMapping("/saveUser")
	public String saveUser() {
		UserInfo userInfo = new UserInfo();
		userInfo.setId(4);
		userInfo.setUserName("xiaolin");
		userInfo.setPassWord("54321");
		userInfo.setPhone("18500909876");
		userInfo.setCreateDay("2022-02-06");
		userInfoService.saveData(userInfo);
		return "success";
	}

	/**
	 * 根据id查询
	 * @param id
	 * @return
	 */
	@GetMapping("/getById")
	public UserInfo getById(int id) {
		return userInfoService.selectById(id);
	}

	/**
	 * 查询所有
	 * @return
	 */
	@GetMapping("/getList")
	public List<UserInfo> getList() {
		return userInfoService.selectList();
	}
}

12、Application

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

/**
 * @Description: 启动类
 */
@SpringBootApplication
@ComponentScan({ "org.demoflowable" })
@MapperScan(basePackages = "org.demoflowable.*.dao")
public class Application {

	/**
	 * @Title: main
	 * @Description: 启动类
	 * @param args
	 * @date 2023-11-08 23:49:23
	 */
	public static void main(String[] args) {
		SpringApplication.run(Application.class, args);
	}
}

启动代码成功

12、查看接口数据

数据对应上了,springboot与clickhouse集成成功

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值