From 437fea5a32698ee6da2a5baf98dee5dfe509bcb7 Mon Sep 17 00:00:00 2001 From: cicadasmile <1327880701@qq.com> Date: Mon, 7 Oct 2019 21:53:42 +0800 Subject: [PATCH] =?UTF-8?q?SpringBoot2=20=E6=95=B4=E5=90=88=20ClickHouse?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E5=BA=93=EF=BC=8C=E5=AE=9E=E7=8E=B0=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E9=AB=98=E6=80=A7=E8=83=BD=E6=9F=A5=E8=AF=A2=E5=88=86?= =?UTF-8?q?=E6=9E=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 26 ++++--- pom.xml | 2 + ware-click-house/pom.xml | 76 +++++++++++++++++++ .../java/com/click/house/Application7016.java | 13 ++++ .../com/click/house/config/DruidConfig.java | 26 +++++++ .../click/house/config/JdbcParamConfig.java | 52 +++++++++++++ .../house/controller/UserInfoController.java | 36 +++++++++ .../java/com/click/house/entity/UserInfo.java | 59 ++++++++++++++ .../click/house/mapper/UserInfoMapper.java | 15 ++++ .../click/house/service/UserInfoService.java | 14 ++++ .../service/impl/UserInfoServiceImpl.java | 31 ++++++++ .../src/main/resources/application-dev.yml | 10 +++ .../src/main/resources/application.yml | 19 +++++ .../main/resources/mapper/UserInfoMapper.xml | 37 +++++++++ .../src/main/resources/user-info.sql | 20 +++++ 15 files changed, 424 insertions(+), 12 deletions(-) create mode 100644 ware-click-house/pom.xml create mode 100644 ware-click-house/src/main/java/com/click/house/Application7016.java create mode 100644 ware-click-house/src/main/java/com/click/house/config/DruidConfig.java create mode 100644 ware-click-house/src/main/java/com/click/house/config/JdbcParamConfig.java create mode 100644 ware-click-house/src/main/java/com/click/house/controller/UserInfoController.java create mode 100644 ware-click-house/src/main/java/com/click/house/entity/UserInfo.java create mode 100644 ware-click-house/src/main/java/com/click/house/mapper/UserInfoMapper.java create mode 100644 ware-click-house/src/main/java/com/click/house/service/UserInfoService.java create mode 100644 ware-click-house/src/main/java/com/click/house/service/impl/UserInfoServiceImpl.java create mode 100644 ware-click-house/src/main/resources/application-dev.yml create mode 100644 ware-click-house/src/main/resources/application.yml create mode 100644 ware-click-house/src/main/resources/mapper/UserInfoMapper.xml create mode 100644 ware-click-house/src/main/resources/user-info.sql diff --git a/README.md b/README.md index beb3bb0..873ea44 100644 --- a/README.md +++ b/README.md @@ -5,40 +5,42 @@ 【案例中相关中间件搭建】--> 【[GitHub点这里](https://github.com/cicadasmile/linux-system-base)】 【[码云.点这里](https://gitee.com/cicadasmile/linux-system-base)】
-01、SpringBoot2.0 整合 shard-jdbc 中间件,实现数据分库分表
+01、SpringBoot2 整合 shard-jdbc 中间件,实现数据分库分表
-02、SpringBoot2.0 整合 JavaMail ,实现异步发送邮件功能
+02、SpringBoot2 整合 JavaMail ,实现异步发送邮件功能
-03、SpringBoot2.0 整合 RocketMQ ,实现请求异步处理
+03、SpringBoot2 整合 RocketMQ ,实现请求异步处理
-04、SpringBoot2.0 整合 Swagger2 ,构建接口管理界面
+04、SpringBoot2 整合 Swagger2 ,构建接口管理界面
-05、SpringBoot2.0 整合 QuartJob ,实现定时器实时管理
+05、SpringBoot2 整合 QuartJob ,实现定时器实时管理
-06、SpringBoot2.0 整合 Redis集群 ,实现消息队列场景
+06、SpringBoot2 整合 Redis集群 ,实现消息队列场景
-07、SpringBoot2.0 整合 Dubbo框架 ,实现RPC服务远程调用
+07、SpringBoot2 整合 Dubbo框架 ,实现RPC服务远程调用
-08、SpringBoot2.0 整合 ElasticSearch框架,实现高性能搜索引擎
+08、SpringBoot2 整合 ElasticSearch框架,实现高性能搜索引擎
-09、SpringBoot2.0 整合 JWT 框架,解决Token跨域验证问题
+09、SpringBoot2 整合 JWT 框架,解决Token跨域验证问题
-10、SpringBoot2.0 整合 FastDFS 中间件,实现文件分布管理
+10、SpringBoot2 整合 FastDFS 中间件,实现文件分布管理
-11、SpringBoot2.0 整合 Shiro 框架,实现用户权限管理
+11、SpringBoot2 整合 Shiro 框架,实现用户权限管理
-12、SpringBoot2.0 整合 Security 框架,实现用户权限管理
+12、SpringBoot2 整合 Security 框架,实现用户权限管理
+ +[13、SpringBoot2 整合 ClickHouse数据库,实现数据高性能查询分析](https://mp.weixin.qq.com/s?__biz=MzU4Njg0MzYwNw==&mid=2247484121&idx=1&sn=29cc633facbbb2c69afa4e6472fb93e8&chksm=fdf45661ca83df77879cbea0e0e3b445a5972a9fc0f84ae25c6882e60e4bed3dc2a68338fa2a&token=1150397377&lang=zh_CN#rd)
持续更新中... diff --git a/pom.xml b/pom.xml index c1bfffe..31292f7 100644 --- a/pom.xml +++ b/pom.xml @@ -41,6 +41,8 @@ ware-shiro-auth ware-security-auth + + ware-click-house diff --git a/ware-click-house/pom.xml b/ware-click-house/pom.xml new file mode 100644 index 0000000..00fa680 --- /dev/null +++ b/ware-click-house/pom.xml @@ -0,0 +1,76 @@ + + + + org.springframework.boot + spring-boot-starters + 2.1.3.RELEASE + + 4.0.0 + com.click.house + ware-click-house + jar + + + org.springframework.boot + spring-boot-starter-web + + + org.springframework.boot + spring-boot-starter-aop + + + org.springframework.boot + spring-boot-starter-test + + + org.mybatis.spring.boot + mybatis-spring-boot-starter + 1.3.2 + + + mysql + mysql-connector-java + 5.1.38 + + + com.alibaba + druid-spring-boot-starter + 1.1.13 + + + commons-lang + commons-lang + 2.6 + + + + ru.yandex.clickhouse + clickhouse-jdbc + 0.1.53 + + + + + ${project.artifactId} + + + src/main/resources + true + + + + + org.apache.maven.plugins + maven-compiler-plugin + 2.3.2 + + 1.8 + 1.8 + + + + + + \ No newline at end of file diff --git a/ware-click-house/src/main/java/com/click/house/Application7016.java b/ware-click-house/src/main/java/com/click/house/Application7016.java new file mode 100644 index 0000000..9eb3533 --- /dev/null +++ b/ware-click-house/src/main/java/com/click/house/Application7016.java @@ -0,0 +1,13 @@ +package com.click.house; + +import org.mybatis.spring.annotation.MapperScan; +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@SpringBootApplication +@MapperScan(basePackages = {"com.click.house.mapper"}) +public class Application7016 { + public static void main(String[] args) { + SpringApplication.run(Application7016.class,args) ; + } +} diff --git a/ware-click-house/src/main/java/com/click/house/config/DruidConfig.java b/ware-click-house/src/main/java/com/click/house/config/DruidConfig.java new file mode 100644 index 0000000..bb81860 --- /dev/null +++ b/ware-click-house/src/main/java/com/click/house/config/DruidConfig.java @@ -0,0 +1,26 @@ +package com.click.house.config; + +import com.alibaba.druid.pool.DruidDataSource; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import javax.annotation.Resource; +import javax.sql.DataSource; + +@Configuration +public class DruidConfig { + + @Resource + private JdbcParamConfig 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()); + return datasource; + } +} diff --git a/ware-click-house/src/main/java/com/click/house/config/JdbcParamConfig.java b/ware-click-house/src/main/java/com/click/house/config/JdbcParamConfig.java new file mode 100644 index 0000000..9b948af --- /dev/null +++ b/ware-click-house/src/main/java/com/click/house/config/JdbcParamConfig.java @@ -0,0 +1,52 @@ +package com.click.house.config; + +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.stereotype.Component; + +@Component +@ConfigurationProperties(prefix = "spring.datasource.click") +public class JdbcParamConfig { + + private String driverClassName ; + private String url ; + private Integer initialSize ; + private Integer maxActive ; + private Integer minIdle ; + private Integer maxWait ; + 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; + } +} diff --git a/ware-click-house/src/main/java/com/click/house/controller/UserInfoController.java b/ware-click-house/src/main/java/com/click/house/controller/UserInfoController.java new file mode 100644 index 0000000..41cafae --- /dev/null +++ b/ware-click-house/src/main/java/com/click/house/controller/UserInfoController.java @@ -0,0 +1,36 @@ +package com.click.house.controller; + +import com.click.house.entity.UserInfo; +import com.click.house.service.UserInfoService; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.annotation.Resource; +import java.util.List; + +@RestController +@RequestMapping("/user") +public class UserInfoController { + @Resource + private UserInfoService userInfoService ; + @RequestMapping("/saveData") + public String saveData (){ + UserInfo userInfo = new UserInfo () ; + userInfo.setId(4); + userInfo.setUserName("winter"); + userInfo.setPassWord("567"); + userInfo.setPhone("13977776789"); + userInfo.setEmail("winter"); + userInfo.setCreateDay("2020-02-20"); + userInfoService.saveData(userInfo); + return "sus"; + } + @RequestMapping("/selectById") + public UserInfo selectById () { + return userInfoService.selectById(1) ; + } + @RequestMapping("/selectList") + public List selectList () { + return userInfoService.selectList() ; + } +} diff --git a/ware-click-house/src/main/java/com/click/house/entity/UserInfo.java b/ware-click-house/src/main/java/com/click/house/entity/UserInfo.java new file mode 100644 index 0000000..a8aa561 --- /dev/null +++ b/ware-click-house/src/main/java/com/click/house/entity/UserInfo.java @@ -0,0 +1,59 @@ +package com.click.house.entity; + +public class UserInfo { + + private Integer id ; + private String userName ; + private String passWord ; + private String phone ; + private String email ; + 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 getEmail() { + return email; + } + + public void setEmail(String email) { + this.email = email; + } + + public String getCreateDay() { + return createDay; + } + + public void setCreateDay(String createDay) { + this.createDay = createDay; + } +} diff --git a/ware-click-house/src/main/java/com/click/house/mapper/UserInfoMapper.java b/ware-click-house/src/main/java/com/click/house/mapper/UserInfoMapper.java new file mode 100644 index 0000000..842da83 --- /dev/null +++ b/ware-click-house/src/main/java/com/click/house/mapper/UserInfoMapper.java @@ -0,0 +1,15 @@ +package com.click.house.mapper; + +import com.click.house.entity.UserInfo; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +public interface UserInfoMapper { + // 写入数据 + void saveData (UserInfo userInfo) ; + // ID 查询 + UserInfo selectById (@Param("id") Integer id) ; + // 查询全部 + List selectList () ; +} diff --git a/ware-click-house/src/main/java/com/click/house/service/UserInfoService.java b/ware-click-house/src/main/java/com/click/house/service/UserInfoService.java new file mode 100644 index 0000000..836657a --- /dev/null +++ b/ware-click-house/src/main/java/com/click/house/service/UserInfoService.java @@ -0,0 +1,14 @@ +package com.click.house.service; + +import com.click.house.entity.UserInfo; + +import java.util.List; + +public interface UserInfoService { + // 写入数据 + void saveData (UserInfo userInfo) ; + // ID 查询 + UserInfo selectById (Integer id) ; + // 查询全部 + List selectList () ; +} diff --git a/ware-click-house/src/main/java/com/click/house/service/impl/UserInfoServiceImpl.java b/ware-click-house/src/main/java/com/click/house/service/impl/UserInfoServiceImpl.java new file mode 100644 index 0000000..0a3cb60 --- /dev/null +++ b/ware-click-house/src/main/java/com/click/house/service/impl/UserInfoServiceImpl.java @@ -0,0 +1,31 @@ +package com.click.house.service.impl; + +import com.click.house.entity.UserInfo; +import com.click.house.mapper.UserInfoMapper; +import com.click.house.service.UserInfoService; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.List; + +@Service +public class UserInfoServiceImpl implements UserInfoService { + + @Resource + private UserInfoMapper userInfoMapper ; + + @Override + public void saveData(UserInfo userInfo) { + userInfoMapper.saveData(userInfo); + } + + @Override + public UserInfo selectById(Integer id) { + return userInfoMapper.selectById(id); + } + + @Override + public List selectList() { + return userInfoMapper.selectList(); + } +} diff --git a/ware-click-house/src/main/resources/application-dev.yml b/ware-click-house/src/main/resources/application-dev.yml new file mode 100644 index 0000000..30f62c0 --- /dev/null +++ b/ware-click-house/src/main/resources/application-dev.yml @@ -0,0 +1,10 @@ +spring: + datasource: + type: com.alibaba.druid.pool.DruidDataSource + click: + driverClassName: ru.yandex.clickhouse.ClickHouseDriver + url: jdbc:clickhouse://127.0.0.1:8123/default + initialSize: 10 + maxActive: 100 + minIdle: 10 + maxWait: 6000 \ No newline at end of file diff --git a/ware-click-house/src/main/resources/application.yml b/ware-click-house/src/main/resources/application.yml new file mode 100644 index 0000000..cc93ca7 --- /dev/null +++ b/ware-click-house/src/main/resources/application.yml @@ -0,0 +1,19 @@ +server: + tomcat: + uri-encoding: UTF-8 + port: 7016 +spring: + profiles: + active: dev + application: + name: ware-click-house + http: + encoding: + charset: UTF-8 + force: true + enabled: true + +# mybatis 配置 +mybatis: + type-aliases-package: com.click.house.entity + mapper-locations: classpath:/mapper/*.xml \ No newline at end of file diff --git a/ware-click-house/src/main/resources/mapper/UserInfoMapper.xml b/ware-click-house/src/main/resources/mapper/UserInfoMapper.xml new file mode 100644 index 0000000..5c52ec2 --- /dev/null +++ b/ware-click-house/src/main/resources/mapper/UserInfoMapper.xml @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + id,user_name,pass_word,phone,email,create_day + + + + INSERT INTO cs_user_info + (id,user_name,pass_word,phone,email,create_day) + VALUES + (#{id,jdbcType=INTEGER},#{userName,jdbcType=VARCHAR},#{passWord,jdbcType=VARCHAR}, + #{phone,jdbcType=VARCHAR},#{email,jdbcType=VARCHAR},#{createDay,jdbcType=VARCHAR}) + + + + + + \ No newline at end of file diff --git a/ware-click-house/src/main/resources/user-info.sql b/ware-click-house/src/main/resources/user-info.sql new file mode 100644 index 0000000..64cc7ae --- /dev/null +++ b/ware-click-house/src/main/resources/user-info.sql @@ -0,0 +1,20 @@ +CREATE TABLE cs_user_info ( + `id` UInt64, + `user_name` String, + `pass_word` String, + `phone` String, + `email` String, + `create_day` Date DEFAULT CAST(now(),'Date') +) ENGINE = MergeTree(create_day, intHash32(id), 8192) + +INSERT INTO cs_user_info + (id,user_name,pass_word,phone,email) +VALUES + (1,'cicada','123','13923456789','cicada@com'), + (2,'smile','234','13922226789','smile@com'), + (3,'spring','345','13966666789','spring@com'); + +SELECT * FROM cs_user_info ; +SELECT * FROM cs_user_info WHERE user_name='smile' AND pass_word='234'; +SELECT * FROM cs_user_info WHERE id IN (1,2); +SELECT * FROM cs_user_info WHERE id=1 OR id=2 OR id=3; \ No newline at end of file