摘要:本文就使用springboot結合mybatis plus在項目中實現對GaussDB(DWS)的增刪改查操作。 本文分享自華為雲社區《基於SpringBoot實現操作GaussDB(DWS)的項目實戰【玩轉PB級數倉GaussDB(DWS)】》,作者:清雨小竹。 GaussDB(DWS) 數 ...
摘要:本文就使用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
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
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(); }
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); }
總結:通過以上實驗實現了在springboot框架中利用mybatis ORM框架對GaussDB(DWS)的增刪改查(ARUD)操作,在項目開發中更具有實用性。本示例項目已上傳至附件。
附件:測試項目代碼.rar9.50MB