JDBC 連線詳解

Java頭條發表於2019-03-10

前提條件

  • Maven

  • 一個擁有訪問憑證的 Db2 例項:

    • IBM Cloud

    • 本地

  • Java JDK

  • IBM Cloud 開發者工具(可選)

建立專案

首先,確定你計劃使用 IBM Cloud 開發者工具還是 Spring Initializr 建立專案,然後按照各自的說明進行操作。

IBM Cloud 開發者工具

如果你使用 IBM Cloud 開發者工具建立專案,那麼使用 dev 外掛建立新的 Spring 微服務。

1

ibmcloud dev create

  1. 選擇 Backend Service / Web App。

  2. 選擇 Java - Spring。

  3. 選擇 Java Microservice with Spring (Microservice)。

  4. 指定專案名稱(例如 MyDb2JDBCProject)。

  5. 拒絕嚮應用程式新增服務 (n)。

  6. 選擇合適的工具鏈,如果不確定,請選擇 None("No Devops")。

  7. 切換到應用程式目錄。

  8. 將 Spring JDBC 啟動器新增到 pom.xml 中的 dependencies 元素中:

    1

    2

    3

    4

    <dependency>

       <groupId>org.springframework.boot</groupId>>

       <artifactId>spring-boot-starter-data-jdbc</artifactId>

    </dependency>

Spring Initializr

如果你使用 Spring Initializr 建立專案,那麼使用瀏覽器訪問 https://start.spring.io。

  1. 選擇您的 Spring Boot 級別(目前預設版本為 2.0.4)。

  2. 指定專案工件名稱(例如,mydb2jdbcproject)。

  3. 新增 Web 依賴項。

  4. 新增 JDBC 依賴項。

  5. 選擇 Generate Project,然後下載應用程式包。

  6. 解壓程式包。

  7. 切換到解壓目錄。

將 db2jcc4.jar 新增到專案中

Maven 中不提供 Db2 JDBC Driver (JCC),所以你必須直接從 IBM 下載,並將其新增到本地 maven 倉庫。

  1. 從 Db2 JDBC 驅動程式版本和下載中選擇並下載合適的驅動程式歸檔檔案。

  2. 解壓縮此程式包,並將 db2jcc4.jar 檔案儲存到專案根目錄下的新 lib 目錄中。

  3. 在此 lib 目錄中,將Jar 作為 Maven 包新增,並根據您下載的程式包相應地更改版本:

    1

    mvn install:install-file -DlocalRepositoryPath=lib -DcreateChecksum=true -Dpackaging=jar -Dfile=./lib/db2jcc4.jar -DgroupId=com.ibm.db2.jcc -DartifactId=db2jcc4 -Dversion=4.24.92

  1. 將 lib 目錄作為 Maven 倉庫新增到 pom.xml:

    1

    2

    3

    4

    5

    6

    <repositories>

      <repository>

        <id>repo</id>

        <url>file://${project.basedir}/lib</url>

      </repository>

    </repositories>

  2. 將依賴關係新增到 pom.xml 中的 dependencies 元素,並相應地更改版本以實現匹配:

    1

    2

    3

    4

    5

    <dependency>

      <groupId>com.ibm.db2.jcc</groupId>

      <artifactId>db2jcc4</artifactId>

      <version>4.24.92</version>

    </dependency>

建立示例表

對於本快速指南,我們只使用一個資料庫和一個表。

使用 Db2 命令提示符連線到 Db2 例項,併發出以下 SQL 語句以建立 things 表並填充一些資料:

1

2

create table things (id int, name varchar(255))

insert into things (id,name) values (1,'fish'),(2,'wibble'),(3,'stiletto')

如果你選擇為此表使用不同的名稱,就需要記住這個名稱,以便稍後建立 JPA 類時使用。

為 Db2 例項配置 Spring 資料

Spring 需要被告知如何與資料庫進行通訊,與其他 Spring 配置一樣,這些資訊在 application.properties(或application.yaml)檔案中(位於 src/main/resources/application.properties)。

將以下屬性新增到 application.properties 檔案:

1

2

3

spring.datasource.url=jdbc:db2://mydb2host:50000/mydb2databasename

spring.datasource.username=mydb2username

spring.datasource.password=mydb2password

記得更改這些值,以便與你的 Db2 例項的位置和憑證相匹配。

建立 JDBC 類

1.在專案中,找到 Spring Boot 主應用程式類。

  • 對於通過 Spring Initializr 建立的專案,主應用程式類以建立專案時提供的工件名稱來命名。例如,如果通過com.example 包命名工件 demo,您將在 src/main/java/com/example/DemoApplication.java 目錄下找到主類。

  • 對於通過 IBM Cloud 開發者工具建立的專案,主應用程式類始終位於 src/main/java/application/SBApplication.java 目錄下。

2.在與應用程式類相同的目錄下,為 JDBC 類 jdbc 建立一個目錄。

3.在 jdbc 目錄下,建立用於表示錶行的類:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

public class Things {

  private Long id;

  private String name;

  public Things(){

  }

  public Things(long id, String name){

    this.id = id;

    this.name = name;

  }

  @Override

  public String toString() {

    return String.format("Things[id=%d, name='%s']", id, name);

  }

}

通過 JDBC 向 RestController 新增一個簡單的資料庫查詢

對於通過 Spring Initializr 建立的專案,你必須建立自己的 RestController 類。在 jdbc 目錄旁建立一個控制器目錄,然後在該目錄下建立 RestController 類。

對於通過 IBM Cloud 開發者工具建立的專案,在 src/main/java/application/rest/v1/Example.java 中已為您提供 RestController 示例。


RestController 為你的應用程式提供 REST 端點。使用 @Autowired 將倉庫儲存庫注入到 RestController 中,然後新增一個可以返回表中資料的簡單端點:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

import org.springframework.jdbc.core.JdbcTemplate;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.RestController;

import org.springframework.http.HttpStatus;

import org.springframework.http.ResponseEntity;

import org.springframework.web.bind.annotation.ResponseBody;

import java.util.ArrayList;

import java.util.List;

 

@RestController

public class Example {

 

    @Autowired

    JdbcTemplate jdbcTemplate;

 

    @RequestMapping("test")

    public @ResponseBody ResponseEntity<String> example() {

        List<String> list = new ArrayList<>();

        list.add("Table data...");

        jdbcTemplate.query(

                "SELECT * FROM things", new Object[]{},

                (rs,rowNum) -> new Things(rs.getLong("id"), rs.getString("name")))

                .forEach(thing -> list.add(thing.toString()));

        return new ResponseEntity<String>(list.toString(), HttpStatus.OK);

    }

 

}

你可能需要為之前建立的 Things 類新增匯入功能。

執行該示例

你可以像執行任何其他 Spring Boot 應用程式一樣執行該示例。

1

mvn spring-boot:run

然後,你可以訪問此端點,檢視它查詢資料庫和檢索資訊的情況。

1

2

$ curl http://localhost:8080/test

[Table data..., Things[id=1, name='fish'], Things[id=2, name='wibble'], Things[id=3, name='stiletto']]

總結

通過使用 Spring 自動配置和 Spring Boot 屬性,Spring Boot 能夠使我們以 Spring 原生方式輕鬆地配置和使用 Db2 例項。


這裡是開發者交流聚集地,歡迎加入我們一起技術分享,互相交流!

技術交流群:關注本公眾號,點選選單欄即可獲取


640?wx_fmt=jpeg

商務合作:codingLiu


640?wx_fmt=gif640?wx_fmt=png喜歡文章請給我好看!640?wx_fmt=gif

相關文章