实例讲解使用Spring通过JPA连接到Db2
前提条件
- maven
- 一个拥有访问凭证的 db2 实例:
- ibm cloud
- 本地
- java jdk
- ibm cloud 开发者工具(可选)
创建项目
首先,确定您计划使用 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.指定项目名称(例如 mydb2jpaproject)。
5.拒绝向应用程序添加服务 (n)。
6.选择合适的工具链,如果不确定,选择 none("no devops")。
7.切换到应用程序目录。
8.将 spring jpa 启动器添加到 pom.xml 中的 dependencies 元素中:
<dependency> <groupid>org.springframework.boot</groupid>> <artifactid>spring-boot-starter-data-jpa</artifactid> </dependency>
spring initializr
如果您使用 spring initializr 创建项目,那么使用浏览器访问 https://start.spring.io。
1.选择您的 spring boot 级别(目前默认版本为 2.0.4)。
2.指定项目工件名称(例如 mydb2jpaproject)。
3.添加 web 依赖项。
4.添加 jpa 依赖项。
5.选择 generate project,然后下载应用程序包。
6.解压程序包。
7.切换到解压目录。
将db2jcc4.jar 添加到项目中
maven 中不提供 db2 jdbc driver (jcc),所以您必须直接从 ibm 下载,并将其添加到本地 maven 仓库。
从 db2 jdbc 驱动程序版本和下载中选择并下载适合您的驱动程序包。
解压此程序包,并将 db2jcc4.jar 文件保存到项目根目录下的一个新的 lib 目录中。
在此 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
将 lib 目录作为 maven 仓库添加到 pom.xml:
<repositories> <repository> <id>repo</id> <url>file://${project.basedir}/lib</url> </repository> </repositories>
将依赖添加到 pom.xml 中的 dependency 元素,并相应地更改版本以实现匹配:
<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 实例的位置和凭证相匹配。
创建 jpa 类
在项目中,找到 spring boot 主应用程序类。
对于通过 spring initializr 创建的项目,主应用程序类以创建项目时提供的工件名称来命名。例如,如果通过 com.example 包命名工件 demo,您将在 src/main/java/com/example/demoapplication.java 目录下找到主类。
对于通过 ibm cloud 开发者工具创建的项目,主应用程序类始终位于 src/main/java/application/sbapplication.java 目录下。
在与应用程序类相同的目录下,为 jpa 类 jpa 创建一个目录。
在 jpa 目录下,创建表示表行的类。该类应该与您之前创建的表使用相同的名称。
import javax.persistence.entity; import javax.persistence.id; @entity public class things { @id private long id; private string name; public things(){ } @override public string tostring() { return string.format("things[id=%d, name='%s']", id, name); } }
在与该类相同的目录下,创建用于访问数据的 repository 类。接口用您刚才创建的类的类型。
import java.util.list; import org.springframework.data.repository.crudrepository; public interface repository extends crudrepository<things, long> { list<things> findbyname(string name); iterable<things> findall(); }
将 jpa 类的简单调用添加到 restcontroller
对于通过 spring initializr 创建的项目,您必须创建自己的 restcontroller 类。在 jpa 目录旁创建一个控制器目录,然后在该目录下创建 restcontroller 类。
对于通过 ibm cloud 开发者工具创建的项目,在 src/main/java/application/rest/v1/example.java 中已为您提供 restcontroller 示例。
restcontroller 为您的应用程序提供 rest 端点。使用 @autowired 将仓库注入到 restcontroller 中,然后添加一个可以返回表中数据的简单端点:
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 repository repo; @requestmapping("test") public @responsebody responseentity<string> example() { list<string> list = new arraylist<>(); list.add("table data..."); for(things things: repo.findall()){ list.add(things.tostring()); } return new responseentity<string>(list.tostring(), httpstatus.ok); } }
您可能需要为之前创建的 things 和 repository 类添加导入功能。
运行该示例
您可以像运行任何其他 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 实例。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
上一篇: 初识bootstrap
下一篇: AI绘制可爱的招财猫插画教程