Springboot+Mybatisplus+ClickHouse集成

springboot,mybatisplus,clickhouse,集成 · 浏览次数 : 123

小编点评

**核心依赖** * **ru.yandex.clickhouse** 用于 ClickHouse 数据库的 JDBC 连接。 * **com.baomidou** 用于 Mybatis-plus ORM 的配置和操作。 * **org.springframework.boot** 用于 Spring Boot 应用的配置和基础设施。 **Mapper 注解** * **TableClickhouse** 是一个接口,继承自 `BaseMapper`。 * `insertBatchSomeColumn` 用于批量插入 ClickHouse 数据。 * `removeByIdsClickhouse` 用于批量删除 ClickHouse 数据。 * `updateClickhouse` 用于修改 ClickHouse 数据。 * `updateClickHouseById` 用于根据 ID 更新 ClickHouse 数据。 **数据库操作** * `insertBatchSomeColumn` 创建一个包含多个 ClickHouse 数据的列表。 * `removeByIdsClickhouse` 删除一个或多个 ClickHouse 数据。 * `updateClickhouse` 更新一个 ClickHouse 数据。 * `updateClickHouseById` 根据 ID 更新一个 ClickHouse 数据。 **其他配置** * `configuration` 配置 Mybatis-plus 的 XML 配置。 * `type-enums-package` 设置枚举类的 package。 * `global-config` 配置全局配置。

正文

核心依赖引入

<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测试!!

与Springboot+Mybatisplus+ClickHouse集成相似的内容:

Springboot+Mybatisplus+ClickHouse集成

# 核心依赖引入 ```xml ru.yandex.clickhouse clickhouse-jdbc 0.1.53 com.baomidou mybatis-plus-boot-starter 3.5.1 org.springframework.boot spring-boot-starter-

多租户基于Springboot+MybatisPlus实现使用一个数据库一个表 使用字段进行数据隔离

# 多租户实现方式 ```properties 多租户在数据存储上主要存在三种方案,分别是: 1. 独立数据库 即一个租户一个数据库,这种方案的用户数据隔离级别最高,安全性最好,但成本较高。 优点:为不同的租户提供独立的数据库,有助于简化数据模型的扩展设计,满足不同租户的独特需求;如果出现故障,恢复

SpringBoot彩蛋之定制启动画面

写在前面 在日常开发中,我们经常会看到各种各样的启动画面。例如以下几种 ① spring项目启动画面 ② mybatisplus启动画面 ③若依项目启动画面 还有很多各式各样好看的启动画面,那么怎么定制这些启动画面呢? 一、小试牛刀 ① 新建一个SpringBoot项目 ②在项目的resources

SpringBoot中几种好用的代码生成器(基于Mybatis-plus生成entity、mapper、xml等)

前言 熟悉Spring框架的同学一定都知道MVC开发模式吧,控制器(Controller)、业务类(Service)、持久层(Repository)、数据库映射(Mapper)、各种DO类构成了我们服务端的代码。初学的时候,觉得新鲜手写这些东西不觉得有啥,但是写久了就会觉得很烦。好不容易在数据库中写

我的第一个项目(十四) :完成数据保存功能(前端,增查改接口)

好家伙,天天拖,终于写完了 代码已开源(Gitee) PH-planewar: 个人开发的全栈小游戏 前端:vue2 + element-ui 后端: Springboot + mybatis-plus 数据库: mysql 目前实现功能: 1.注册登陆 2.游戏数据保存 3.游戏运行 (gitee

我的第一个项目(十五) :完成数据保存功能(后端,改update)

好家伙, 代码已开源(Gitee) PH-planewar: 个人开发的全栈小游戏 前端:vue2 + element-ui 后端: Springboot + mybatis-plus 数据库: mysql 目前实现功能: 1.注册登陆 2.游戏数据保存 3.游戏运行 (gitee.com) 后端这

基于SpringBoot实现操作GaussDB(DWS)的项目实战

摘要:本文就使用springboot结合mybatis plus在项目中实现对GaussDB(DWS)的增删改查操作。 本文分享自华为云社区《基于SpringBoot实现操作GaussDB(DWS)的项目实战【玩转PB级数仓GaussDB(DWS)】》,作者:清雨小竹。 GaussDB(DWS) 数

SpringBoot2.7升级到3.0的实践分享

背景 最近把项目中的技术框架做一次升级,最重要的就是SpringBoot从2.7.x升级到3.0.x,当然还会有一些周边的框架也会连带着升级,比如Mybatis Plus,SpringCloud等,话不多说直接看看有哪些事情要做。 具体事项 主要分两类,第一类是单纯的提升版本,主要如下: 1.jdk

SpringBoot实战:轻松实现接口数据脱敏

引言 在现代的互联网应用中,数据安全和隐私保护变得越来越重要。尤其是在接口返回数据时,如何有效地对敏感数据进行脱敏处理,是每个开发者都需要关注的问题。本文将通过一个简单的Spring Boot项目,介绍如何实现接口数据脱敏。 一、接口数据脱敏概述 1.1 接口数据脱敏的定义 接口数据脱敏是指在接口返

Springboot中自定义监听器

一、监听器模式图 二、监听器三要素 广播器:用来发布事件 事件:需要被传播的消息 监听器:一个对象对一个事件的发生做出反应,这个对象就是事件监听器 三、监听器的实现方式 1、实现自定义事件 自定义事件需要继承ApplicationEvent类,并添加一个构造函数,用于接收事件源对象。 该事件中添加了