首页 > 其他分享 >Springboot+Mybatisplus+ClickHouse集成

Springboot+Mybatisplus+ClickHouse集成

时间:2023-05-25 22:45:43浏览次数:51  
标签:Mybatisplus Springboot idw ClickHouse import com id clickhouse name

核心依赖引入

<dependency>
            <groupId>ru.yandex.clickhouse</groupId>
            <artifactId>clickhouse-jdbc</artifactId>
            <version>0.1.53</version>
        </dependency>

        <!--Mybatis-plus ORM-->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.5.1</version>
        </dependency>
		
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <version>2.6.9</version>
        </dependency>

建立ClickHouse的测试数据库和表

image

配置数据源

spring:
  application:
    name: clickhouse-project
  datasource:
    type: com.zaxxer.hikari.HikariDataSource
    url: jdbc:clickhouse://120.53.238.87:8123/study_db
    driver-class-name: ru.yandex.clickhouse.ClickHouseDriver
    username: default
    password:

mybatis-plus:
  type-aliases-package: com.gton.user.entity
  mapper-locations: classpath*:com/gton/user/mapper/xml/*Mapper.xml,classpath*:/mapper/**/*.xml
  configuration:
    map-underscore-to-camel-case: true  #开启驼峰命名
    cache-enabled: false #开启二级缓存
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl # 控制台日志
  check-config-location: true # 检查xml是否存在
  type-enums-package: com.gton.enumPackage  #通用枚举开启
  global-config:
    db-config:
      logic-not-delete-value: 1
      logic-delete-field: isDel
      logic-delete-value: 0
server:
  port: 18123

Mybatisplus的逆向工程或者EasyCode全自动代码生成器

完成MapperXML 、 MapperInterface 、 Entity 、 Controller 、Service
与ServiceImpl 的建立

Entity实体类如下

package com.gton.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.experimental.Accessors;

import java.io.Serializable;

/**
* (TableClickhouse)表实体类
*
* @author 郭童
* @since 2023-05-21 20:14:14
*/
@Data
@Accessors(chain = true)
@ApiModel(value = "TableClickhouse", description = "EasyCode")
public class TableClickhouse implements Serializable {
private static final long serialVersionUID = 1L;
  
       @TableId(value = "id", type = IdType.ASSIGN_ID) 
       @ApiModelProperty("${column.comment}")
       private Integer id;
      
       @TableField(value = "name")
       @ApiModelProperty("${column.comment}")
       private String name;
      
       @TableField(value = "age")
       @ApiModelProperty("${column.comment}")
       private Integer age;
      
       @TableField(value = "data")
       @ApiModelProperty("${column.comment}")
       private String data;
   
}

Mapper核心就是要自己写Update/delete:他们与Mysql的不一样

删除:
ALTER TABLE study_db.table_clickhouse DELETE WHERE id = #{idw}
修改:
ALTER TABL

ClickHouse的修改和删除 SQL操作与Mysql不相同。注意它是异步的,不会返回执行结果!!

package com.gton.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Mapper;
import com.gton.entity.TableClickhouse;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Update;

import java.util.List;

/**
 * (TableClickhouse)表数据库访问层
 *
 * @author 郭童
 * @since 2023-05-21 20:14:14
 */
@Mapper
@SuppressWarnings("all")
public interface TableClickhouseMapper extends BaseMapper<TableClickhouse> {


    // 批量插入
    int insertBatchSomeColumn(@Param("list") List<TableClickhouse> batchList);

    /**
     * Description: Clickhouse 的删除语句
     */
    @Delete("ALTER TABLE study_db.table_clickhouse DELETE WHERE id = #{idw}")
    Integer removeByIdsClickhouse(@Param("idw") Long idw);

    /**
     * Description: Clickhouse 修改Clickhouse
     */
    @Update("ALTER TABLE study_db.table_clickhouse UPDATE name=#{namew} WHERE id = #{idw}")
    boolean updateClickhouse(@Param("idw") Long idw, @Param("namew") String namew);


    /**
     * Description: Clickhouse 修改Clickhouse2
     */
    @Update("ALTER TABLE study_db.table_clickhouse UPDATE " +
            "name=#{name} ," +
            "age=#{age} ," +
            "data=#{data} " +
            "WHERE id = #{id}")
    Integer updateClickHouseById(TableClickhouse tableClickhouse);
}


完事 !!利用Swagger测试!!

标签:Mybatisplus,Springboot,idw,ClickHouse,import,com,id,clickhouse,name
From: https://www.cnblogs.com/gtnotgod/p/17433185.html

相关文章

  • springboot线程池使用
    1、配置@Configuration@EnableAsyncpublicclassTaskPoolConfig{@Bean("taskExecutor")publicExecutortaskExecutro(){ThreadPoolTaskExecutortaskExecutor=newThreadPoolTaskExecutor();taskExecutor.setCorePoolSize(10);......
  • springboot aspect 对请求参数,返回数据加密
        对客户端<--->服务端传输数据加密。  上送文件流不加密,其他信息加密。  返回信息加密。 切面的方式进行解密,不修改业务逻辑。   找到对应的方法,对应的参数,进行解密。@Around("@annotation(com.jiayingsoft.scip.annotation.ScipSecureityMethodAtn......
  • SpringBoot结合easyexcel处理Excel文件
    文/朱季谦假如有这样一个需求,每天需要读取以下表头的Excel文件,统计文件里击中黑名单的比例,该文件is_blacklist列的1表示击中了黑名单,0表示未击中黑名单。基于该需求,可以在定时任务通过easyexcel工具进行处理。一、首先需要在SpringBoot引入easyexcel的maven依赖<dependency>......
  • springboot 跳转到网页上的两种实现方式(转发与重定向详细对比)
    1.情景展示虽然现在流行的是前后端分离,后端开发与前端往往只进行数据交互,不需要参与对网页跳转的控制及网页内容的开发。但是,由服务器(后端)跳转到客户端(浏览器)或者从A服务器跳到B服务器是一项基本的能力。在项目开发中,真正遇到的时候,该如何实现?哪种实现方式更好?2.具体分析......
  • SpringBoot中使用@Scheduled实现定时任务通过读取配置文件动态开关
    场景SpringBoot中定时任务与异步定时任务的实现:https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/117083609上面讲的通过@Scheduled注解实现简单定时任务的方式。如果定时任务有多个,不同业务场景下需要动态配置某个定时任务的开关。可以通过@ConditionalOnPropert......
  • springboot入门
    1. 介绍  7SpringBoot是Spring中的一个成员, 可以简化Spring,SpringMVC的使用。 他的核心还是IOC容器。1.1 特点:  7Create stand-alone Spring applications创建spring应用Embed Tomcat, Jetty or Undertow directly (no need to deploy WAR files)内嵌的tomca......
  • 万字长文详述ClickHouse在京喜达实时数据的探索与实践
    1前言京喜达技术部在社区团购场景下采用JDQ+Flink+Elasticsearch架构来打造实时数据报表。随着业务的发展Elasticsearch开始暴露出一些弊端,不适合大批量的数据查询,高频次深度分页导出导致ES宕机、不能精确去重统计,多个字段聚合计算时性能下降明显。所以引入ClickHouse来处理这......
  • Springboot @Value注解
    配置文件test:name:123list:1,2,3aa:userInfoServiceImpl.merChantNoController:@Value("${test.name}")publicStringname1;//输出123@Value("#{'${test.list}'}")publicList<Object>list;//输出[1,2,3]......
  • SpringBoot 出现 Content type ‘application/x-www-form-urlencoded;charset=UTF-8‘
    问题点1:如果Content-Type设置为“application/x-www-form-urlencoded;charset=UTF-8”无论是POST请求还是GET请求都是可以通过这种方式成功获取参数,但是如果前端POST请求中的body是Json对象的话,会报上述错误。请求中传JSON时设置的Content-Type如果是application/json或者tex......
  • Mybatis中,SpringMVC中,SpringBoot项目中,出现There is no getter for property named 'x
    现象:Thereisnogetterforpropertynamed'xxxxxx'报错原因:其实说起原因有很多种,百度上都有很详细的说明,其中最重要也是经常发生的就是mapper.xml与是对应的实体类匹配不上导致错误发生,而我报错的原因是从mapper接口中向xml传入参数的时候,传入的是实体类对象,只有这一个参数,而在......