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

基于,springboot,实现,操作,gaussdb,dws,项目,实战 · 浏览次数 : 177

小编点评

**代码描述** * **`TestDwsSpringBootApplication`** 是测试类的启动类,它使用 `SpringApplication` 类启动应用程序并扫描 `com.zz.testdws.mapper` 的 mapper 接口。 * **``CustomerMapper`** 是`Customer`的 mapper 接口,它继承 `BaseMapper` 类,并实现 ``insert``, ``update`` 和 ``delete` 方法。 * **```insert`** 方法用于插入数据。 * **``update`** 方法用于更新数据。 * **``delete`** 方法用于删除数据。 * **```selectList`** 方法用于获取数据列表。 **测试代码** * **``testDoSQL`** 方法测试使用 SQL 执行增删改查操作。 * **```testMybatis`** 方法测试使用 MyBatis 对GaussDB执行增删改查操作。 **效果** * 测试代码能够在项目中实现增删改查操作。 * 通过 ``selectList`** 方法可以获取数据列表。

正文

摘要:本文就使用springboot结合mybatis plus在项目中实现对GaussDB(DWS)的增删改查操作。

本文分享自华为云社区《基于SpringBoot实现操作GaussDB(DWS)的项目实战【玩转PB级数仓GaussDB(DWS)】》,作者:清雨小竹。

GaussDB(DWS)

数据仓库服务GaussDB(DWS) 是一种基于华为云基础架构和平台的在线数据处理数据库,提供即开即用、可扩展且完全托管的分析型数据库服务。GaussDB(DWS)是基于华为融合数据仓库GaussDB产品的云原生服务 ,兼容标准ANSI SQL 99和SQL 2003,同时兼容PostgreSQL/Oracle数据库生态,为各行业PB级海量大数据分析提供有竞争力的解决方案。

GaussDB(DWS) 基于Shared-nothing分布式架构,具备MPP (Massively Parallel Processing)大规模并行处理引擎,由众多拥有独立且互不共享的CPU、内存、存储等系统资源的逻辑节点组成。在这样的系统架构中,业务数据被分散存储在多个节点上,数据分析任务被推送到数据所在位置就近执行,并行地完成大规模的数据处理工作,实现对数据处理的快速响应。

zh-cn_image_0000001231270999.png

Spring Boot

Spring Boot是一个构建在Spring框架顶部的项目。它提供了一种简便,快捷的方式来设置,配置和运行基于Web的简单应用程序。它是一个Spring模块,提供了 RAD(快速应用程序开发)功能。它用于创建独立的基于Spring的应用程序,因为它需要最少的Spring配置,因此可以运行。简而言之,Spring Boot是 Spring Framework 和 嵌入式服务器的组合。在Spring Boot不需要XML配置(部署描述符)。它使用约定优于配置软件设计范例,这意味着可以减少开发人员的工作量。我们可以使用Spring STS IDE 或 Spring Initializr 进行开发Spring Boot Java应用程序。

什么是Spring Boot

Mybatis plus(MP)

MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集,MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Ordinary Java Object,普通的 Java对象)映射成数据库中的记录。MyBatis-Plus(简称 MP)是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。

华为云官方文档给出了使用JDBC连接GaussDB(DWS)并实现增删改查基本操作的教程和代码示例。https://support.huaweicloud.com/devg-dws/dws_04_0085.html,在java开发中springboot作为一个常用的开发框架在很多项目中使用,下面就使用springboot结合mybatis plus在项目中实现对GaussDB(DWS)的增删改查操作。

一、新建springboot项目

1.打开idea基于向导新建springboot项目。

1.png

2.添加依赖JDBC API和SpringWeb

22.png

3.项目新建完成后打开新建libs文件夹,把jdbc驱动复制到libs目录下。https://support.huaweicloud.com/mgtg-dws/dws_01_0032.html

  • gsjdbc4.jar:与PostgreSQL保持兼容,其中类名、类结构与PostgreSQL驱动完全一致,曾经运行于PostgreSQL的应用程序可以直接移植到当前系统中使用。
  • gsjdbc200.jar:如果同一JVM进程内需要同时访问PostgreSQL及GaussDB(DWS) 请使用该驱动包。该包主类名为“com.huawei.gauss200.jdbc.Driver”(即将“org.postgresql”替换为“com.huawei.gauss200.jdbc”) ,数据库连接的URL前缀为“jdbc:gaussdb”,其余与gsjdbc4.jar相同。、

    23.png

4.jar包上鼠标点击右键,点击Add as Library。

5.png

5.打开build.gradle,添加mybatis plus依赖,由于GaussDB DWS兼容PostgreSQL所以runtimeOnly可以使用org.postgresql:postgresql

dependencies {
    //mybatis-plus
    implementation 'com.baomidou:mybatis-plus-boot-starter:3.5.2'

    implementation 'org.springframework.boot:spring-boot-starter-jdbc'
    implementation 'org.springframework.boot:spring-boot-starter-web'
    runtimeOnly 'org.postgresql:postgresql'
    testImplementation 'org.springframework.boot:spring-boot-starter-test'
}

6.打开application.properties配置数据库源信息。

spring.datasource.driver-class-name=org.postgresql.Driver
spring.datasource.url=jdbc:postgresql://xx.xx.xx.xx:8000/database?currentSchema=traffic_data
spring.datasource.username=dbadmin
spring.datasource.password=xxxxxx

二、配置mybatis plus

7.新增数据表

CREATE TABLE "traffic_data"."customer" (
"id" int4,
"c_customer_sk" int4,
"c_customer_name" varchar(32)
);

8.新增包名com.zz.testdws.mapper和com.zz.testdws.entity

24.png

9.新建实体类对象customer.java和Mappder对象CustomerMapper.java文件

package com.zz.testdws.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;

/**
 * <p>
 * 
 * </p>
 *
 * @author zzzili
 * @since 2023-02-16
 */
public class customer  {

    private static final long serialVersionUID = 1L;

    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;

    private Integer cCustomerSk;

    private String cCustomerName;

    @Override
    public String toString() {
        return "customer{" +
                "id=" + id +
                ", cCustomerSk=" + cCustomerSk +
                ", cCustomerName='" + cCustomerName + '\'' +
                '}';
    }

    public Integer getId() {
        return id;
    }

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

    public Integer getcCustomerSk() {
        return cCustomerSk;
    }

    public void setcCustomerSk(Integer cCustomerSk) {
        this.cCustomerSk = cCustomerSk;
    }

    public String getcCustomerName() {
        return cCustomerName;
    }

    public void setcCustomerName(String cCustomerName) {
        this.cCustomerName = cCustomerName;
    }
}
package com.zz.testdws.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.zz.testdws.entity.customer;

/**
 * <p>
 *  Mapper 接口
 * </p>
 *
 * @author zzzili
 * @since 2023-02-15
 */
public interface CustomerMapper extends BaseMapper<customer> {
}

10.打开TestDwsSpringBootApplication.java文件,添加mapper扫描器注解@MapperScan("com.zz.testdws.mapper")

package com.zz.testdws;

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
@MapperScan("com.zz.testdws.mapper")
public class TestDwsSpringBootApplication {
    public static void main(String[] args) {
        SpringApplication.run(TestDwsSpringBootApplication.class, args);
    }
}

三、测试数据

11.打开TestDwsSpringBootApplicationTests.java文件编写代码,测试用sql执行增删改查数据。

 @Autowired
    DataSource dataSource;

    @Test
    void testDoSQL() throws SQLException {
        System.out.println(dataSource.getClass());

        //获取连接
        Connection con =  dataSource.getConnection();
        //调用Connection的createStatement方法创建语句对象
        Statement stmt = con.createStatement();
        //调用Statement的executeUpdate方法执行SQL语句
        //int rc = stmt.executeUpdate("CREATE TABLE customer_t1(c_customer_sk INTEGER, c_customer_name VARCHAR(32));");
        //System.out.println("rc = " + rc);

        //int rc = stmt.executeUpdate("INSERT INTO customer_t1(c_customer_sk,c_customer_name) values('1001','zhangsan');");
        //System.out.println("insert rc = " + rc);

        //查询数据
        ResultSet rs= stmt.executeQuery("select * from customer_t1");
        //遍历数据
        while(rs.next()){
            String sk = rs.getString("c_customer_sk");
            String name = rs.getString("c_customer_name");
            System.out.println("sk:"+sk+" 姓名:"+name);
        }

        con.close();
    }

28.png

12.编写代码测试使用mybatis plus实现增删改查。

    @Autowired
    CustomerMapper customerMapper;

    @Test
    void testMybatis(){
        //增加
        customer cus=new customer();
        cus.setcCustomerName("zzzili");
        cus.setcCustomerSk(123456);
        cus.setId(8);
        customerMapper.insert(cus);
        //
        cus.setcCustomerSk(66666);
        customerMapper.updateById(cus);

        //
        List<customer> list = customerMapper.selectList(null);
        System.out.println("list size="+list.size());
        for(customer node :list){
            System.out.println(node);
        }

        //删除
        customerMapper.deleteById(1);

    }

26.png

27.png


总结:通过以上实验实现了在springboot框架中利用mybatis ORM框架对GaussDB(DWS)的增删改查(ARUD)操作,在项目开发中更具有实用性。本示例项目已上传至附件。

附件:测试项目代码.rar9.50MB

 

点击关注,第一时间了解华为云新鲜技术~

与基于SpringBoot实现操作GaussDB(DWS)的项目实战相似的内容:

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

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

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

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

[转帖]调试springboot数据库系统应用时常用debug日志配置, 解决问题缩小范围时常用

https://www.yihaomen.com/article/1853.html 摘要: 用 spring boot 开发应用时,在遇到麻烦问题时,经常会打开debug日志,下面记录一个通用的思路,基于spring boot以及jpa来实现, 一般来说,将root的日志级别设置为log.leve

Dubbo3应用开发—XML形式的Dubbo应用开发和SpringBoot整合Dubbo开发

Dubbo3程序的初步开发 Dubbo3升级的核心内容 易⽤性 开箱即⽤,易⽤性⾼,如 Java 版本的⾯向接⼝代理特性能实现本地透明调⽤功能丰富,基于原⽣库或轻量扩展即可实现绝⼤多数的 微服务治理能⼒。更加完善了多语言支持(GO PYTHON RUST) 超⼤规模微服务实践 ⾼性能通信(Tripl

Springboot简单功能示例-1 实现基本WEB服务

博主尝试通过gitee的发行版,使用Springboot为基础框架,逐步整合JWT、JPA、VUE等常用功能项目。 其中博主还将尝试统一异常处理、自定义加密认证、代码自动生成等功能

Springboot简单功能示例-3 实现基本登录验证

博主尝试通过gitee的发行版,使用Springboot为基础框架,逐步整合JWT、JPA、VUE等常用功能项目。【本节完成】使用spring-security6.1.3,抛弃了WebSecurityConfigurerAdapter的配置方式,直接使用session实现基本的登录验证功能

跟我一起学习和开发动态表单系统-前端用vue、elementui实现方法(3)

基于 Vue、Element UI 和 Spring Boot + MyBatis 的动态表单系统前端实现解析 在现代企业信息系统中,动态表单是一种非常常见的功能。它可以根据业务需求灵活地调整表单结构,以满足不同的数据收集和展示需求。在本文中,我们将探讨一种基于 Vue、Element UI 和 S

一文读懂Apollo客户端配置加载流程

SpringBoot集成Apollo源码分析 本文基于 apollo-client 2.1.0 版本源码进行分析 Apollo 是携程开源的配置中心,能够集中化管理应用不同环境、不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限、流程治理等特性。 Apollo支持4个维度管理Key-

基于SpringBoot应⽤的logback⽇志配置

SpringBoot默认整合了logback-classic⽇志框架,我们需要对logback⽇志框架进⾏配置 以⾃定义⽇志输出格式、⽇志⽂件配置、⽇志⽂件保存策略等信息

简单进行Springboot Beans归属模块单元的统计分析方法

简单进行Springboot Beans归属模块单元的统计分析方法 背景 基于Springboot的产品变的复杂之后 启动速度会越来越慢. 公司同事得出一个结论. beans 数量过多会导致启动速度逐渐变慢. 之前同事写过功能进行分析. 但是本着能不影响产品就不影响产品. 我想通过其他方式进行处理.