在 Spring 上通过 JDBC 连接 Db2

Java · wasabi · 2019-01-11 · 1 次阅读

文章来源: http://www.ibm.com/developerworks/cn/java/j-tutorials-spring-with-db2-via-jdbc/index.html?ca=drs-, 本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。

在 Spring 上通过 JDBC 连接 Db2

在本教程中,您将学习如何使用 Spring 通过 JDBC 连接到 Db2 实例。

免费试用 IBM Cloud

利用IBM Cloud Lite 快速轻松地构建您的下一个应用程序。您的免费帐户从不过期,而且您会获得 256 MB 的 Cloud Foundry 运行时内存和包含 Kubernetes 集群的 2 GB 存储空间。了解所有细节并确定如何开始。如果您不熟悉 IBM Cloud,请查阅 developerWorks 上的 IBM Cloud Essentials 课程

前提条件

创建项目

首先,确定您计划使用 IBM Cloud 开发者 工具 还是 Spring Initializr 创建项目,然后按照各自的说明进行操作。

IBM Cloud 开发者工具

如果您使用 IBM Cloud 开发者工具创建项目 ,那么使用 dev 插件创建新的 Spring 微服务。

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 元素中:
    <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 包添加,并根据您下载的程序包相应地更改版本:
    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:
    <repositories>
      <repository>
        <id>repo</id>
        <url>file://${project.basedir}/lib</url>
      </repository>
    </repositories>
  1. 将依赖关系添加到 pom.xml 中的 dependencies 元素,并相应地更改版本以实现匹配:
    <dependency>
      <groupId>com.ibm.db2.jcc</groupId>
      <artifactId>db2jcc4</artifactId>
      <version>4.24.92</version>
    </dependency>

创建示例表

对于本快速指南,我们只使用一个 数据库 和一个表。

使用Db2 命令提示符连接到 Db2 实例,并发出以下 SQL 语句以创建 things 表并填充一些数据:

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 文件:

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 目录下,创建用于表示表行的类:
    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 中,然后添加一个可以返回表中数据的简单端点:

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 应用程序一样运行该示例。

mvn spring-boot:run

然后,您可以访问此端点,查看它查询数据库和检索信息的情况。

$ 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 实例。

参考资料

以上所述就是小编给大家介绍的《在 Spring 上通过 JDBC 连接 Db2》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

码农书籍
与孩子一起学编程

与孩子一起学编程

[美] 桑德Warren Sande、Carter Sande / 苏金国、姚曜 等 / 人民邮电出版社 / 2010-11 / 65.00元

一本老少咸宜的编程入门奇书!一册在手,你完全可以带着自己的孩子,跟随Sande父子组合在轻松的氛围中熟悉那些编程概念,如内存、循环、输入和输出、数据结构和图形用户界面等。这些知识一点儿也不高深,听起来备感亲切,书中言语幽默风趣而不失真义,让学习过程充满乐趣。细心的作者还配上了孩子们都喜欢的可爱漫画和经过运行测试的程序示例,教你用最易编写和最易理解的Python语言,写出你梦想中的游戏程序。“Hello,World!我来了!”编程乐趣无穷,起点就在脚下,请引导你的孩子走进这奇妙的世界。无论是中小学生还是其他初学者,都可以跟随本书学习Python编程,并过渡到任何其他语言,重要的是你将学会思考问题和解决问题的方法。

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试