翼度科技»论坛 编程开发 mysql 查看内容

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

5

主题

5

帖子

15

积分

新手上路

Rank: 1

积分
15
摘要:本文就使用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、内存、存储等系统资源的逻辑节点组成。在这样的系统架构中,业务数据被分散存储在多个节点上,数据分析任务被推送到数据所在位置就近执行,并行地完成大规模的数据处理工作,实现对数据处理的快速响应。

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应用程序。

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项目。

2.添加依赖JDBC API和SpringWeb

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相同。、

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

5.打开build.gradle,添加mybatis plus依赖,由于GaussDB DWS兼容PostgreSQL所以runtimeOnly可以使用org.postgresql:postgresql
  1. dependencies {
  2.     //mybatis-plus
  3.     implementation 'com.baomidou:mybatis-plus-boot-starter:3.5.2'
  4.     implementation 'org.springframework.boot:spring-boot-starter-jdbc'
  5.     implementation 'org.springframework.boot:spring-boot-starter-web'
  6.     runtimeOnly 'org.postgresql:postgresql'
  7.     testImplementation 'org.springframework.boot:spring-boot-starter-test'
  8. }
复制代码
6.打开application.properties配置数据库源信息。
  1. spring.datasource.driver-class-name=org.postgresql.Driver
  2. spring.datasource.url=jdbc:postgresql://xx.xx.xx.xx:8000/database?currentSchema=traffic_data
  3. spring.datasource.username=dbadmin
  4. spring.datasource.password=xxxxxx
复制代码
二、配置mybatis plus

7.新增数据表
  1. CREATE TABLE "traffic_data"."customer" (
  2. "id" int4,
  3. "c_customer_sk" int4,
  4. "c_customer_name" varchar(32)
  5. );
复制代码
8.新增包名com.zz.testdws.mapper和com.zz.testdws.entity

9.新建实体类对象customer.java和Mappder对象CustomerMapper.java文件
  1. package com.zz.testdws.entity;
  2. import com.baomidou.mybatisplus.annotation.IdType;
  3. import com.baomidou.mybatisplus.annotation.TableId;
  4. /**
  5. * <p>
  6. *
  7. * </p>
  8. *
  9. * @author zzzili
  10. * @since 2023-02-16
  11. */
  12. public class customer  {
  13.     private static final long serialVersionUID = 1L;
  14.     @TableId(value = "id", type = IdType.AUTO)
  15.     private Integer id;
  16.     private Integer cCustomerSk;
  17.     private String cCustomerName;
  18.     @Override
  19.     public String toString() {
  20.         return "customer{" +
  21.                 "id=" + id +
  22.                 ", cCustomerSk=" + cCustomerSk +
  23.                 ", cCustomerName='" + cCustomerName + '\'' +
  24.                 '}';
  25.     }
  26.     public Integer getId() {
  27.         return id;
  28.     }
  29.     public void setId(Integer id) {
  30.         this.id = id;
  31.     }
  32.     public Integer getcCustomerSk() {
  33.         return cCustomerSk;
  34.     }
  35.     public void setcCustomerSk(Integer cCustomerSk) {
  36.         this.cCustomerSk = cCustomerSk;
  37.     }
  38.     public String getcCustomerName() {
  39.         return cCustomerName;
  40.     }
  41.     public void setcCustomerName(String cCustomerName) {
  42.         this.cCustomerName = cCustomerName;
  43.     }
  44. }
  45. package com.zz.testdws.mapper;
  46. import com.baomidou.mybatisplus.core.mapper.BaseMapper;
  47. import com.zz.testdws.entity.customer;
  48. /**
  49. * <p>
  50. *  Mapper 接口
  51. * </p>
  52. *
  53. * @author zzzili
  54. * @since 2023-02-15
  55. */
  56. public interface CustomerMapper extends BaseMapper<customer> {
  57. }
复制代码
10.打开TestDwsSpringBootApplication.java文件,添加mapper扫描器注解@MapperScan("com.zz.testdws.mapper")
  1. package com.zz.testdws;
  2. import org.mybatis.spring.annotation.MapperScan;
  3. import org.springframework.boot.SpringApplication;
  4. import org.springframework.boot.autoconfigure.SpringBootApplication;
  5. @SpringBootApplication
  6. @MapperScan("com.zz.testdws.mapper")
  7. public class TestDwsSpringBootApplication {
  8.     public static void main(String[] args) {
  9.         SpringApplication.run(TestDwsSpringBootApplication.class, args);
  10.     }
  11. }
复制代码
三、测试数据

11.打开TestDwsSpringBootApplicationTests.java文件编写代码,测试用sql执行增删改查数据。
  1. @Autowired
  2.     DataSource dataSource;
  3.     @Test
  4.     void testDoSQL() throws SQLException {
  5.         System.out.println(dataSource.getClass());
  6.         //获取连接
  7.         Connection con =  dataSource.getConnection();
  8.         //调用Connection的createStatement方法创建语句对象
  9.         Statement stmt = con.createStatement();
  10.         //调用Statement的executeUpdate方法执行SQL语句
  11.         //int rc = stmt.executeUpdate("CREATE TABLE customer_t1(c_customer_sk INTEGER, c_customer_name VARCHAR(32));");
  12.         //System.out.println("rc = " + rc);
  13.         //int rc = stmt.executeUpdate("INSERT INTO customer_t1(c_customer_sk,c_customer_name) values('1001','zhangsan');");
  14.         //System.out.println("insert rc = " + rc);
  15.         //查询数据
  16.         ResultSet rs= stmt.executeQuery("select * from customer_t1");
  17.         //遍历数据
  18.         while(rs.next()){
  19.             String sk = rs.getString("c_customer_sk");
  20.             String name = rs.getString("c_customer_name");
  21.             System.out.println("sk:"+sk+" 姓名:"+name);
  22.         }
  23.         con.close();
  24.     }
复制代码

12.编写代码测试使用mybatis plus实现增删改查。
  1.     @Autowired
  2.     CustomerMapper customerMapper;
  3.     @Test
  4.     void testMybatis(){
  5.         //增加
  6.         customer cus=new customer();
  7.         cus.setcCustomerName("zzzili");
  8.         cus.setcCustomerSk(123456);
  9.         cus.setId(8);
  10.         customerMapper.insert(cus);
  11.         //改
  12.         cus.setcCustomerSk(66666);
  13.         customerMapper.updateById(cus);
  14.         //查
  15.         List<customer> list = customerMapper.selectList(null);
  16.         System.out.println("list size="+list.size());
  17.         for(customer node :list){
  18.             System.out.println(node);
  19.         }
  20.         //删除
  21.         customerMapper.deleteById(1);
  22.     }
复制代码


总结:通过以上实验实现了在springboot框架中利用mybatis ORM框架对GaussDB(DWS)的增删改查(ARUD)操作,在项目开发中更具有实用性。本示例项目已上传至附件。
附件:测试项目代码.rar9.50MB
 
点击关注,第一时间了解华为云新鲜技术~

来源:https://www.cnblogs.com/huaweiyun/p/17147208.html
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

举报 回复 使用道具