实例讲解使用Spring通过JPA连接到Db2
前提条件
- Maven
- 一个拥有访问凭证的Db2实例:
- IBMCloud
- 本地
- JavaJDK
- IBMCloud开发者工具(可选)
创建项目
首先,确定您计划使用IBMCloud开发者工具还是SpringInitializr创建项目,然后按照各自的说明进行操作。
IBMCloud开发者工具
如果您使用IBMCloud开发者工具创建项目,那么使用dev插件创建新的Spring微服务。
ibmclouddevcreate
1.选择BackendService/WebApp。
2.选择Java–Spring。
3.选择JavaMicroservicewithSpring(Microservice)。
4.指定项目名称(例如MyDb2JPAProject)。
5.拒绝向应用程序添加服务(n)。
6.选择合适的工具链,如果不确定,选择None("NoDevops")。
7.切换到应用程序目录。
8.将SpringJPA启动器添加到pom.xml中的dependencies元素中:
org.springframework.boot >spring-boot-starter-data-jpa
SpringInitializr
如果您使用SpringInitializr创建项目,那么使用浏览器访问https://start.spring.io。
1.选择您的SpringBoot级别(目前默认版本为2.0.4)。
2.指定项目工件名称(例如mydb2jpaproject)。
3.添加Web依赖项。
4.添加JPA依赖项。
5.选择GenerateProject,然后下载应用程序包。
6.解压程序包。
7.切换到解压目录。
将db2jcc4.jar添加到项目中
Maven中不提供Db2JDBCDriver(JCC),所以您必须直接从IBM下载,并将其添加到本地maven仓库。
从Db2JDBC驱动程序版本和下载中选择并下载适合您的驱动程序包。
解压此程序包,并将db2jcc4.jar文件保存到项目根目录下的一个新的lib目录中。
在此lib目录中,将Jar作为Maven包添加,并根据您下载的程序包相应地更改版本:
mvninstall: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:
repo file://${project.basedir}/lib
将依赖添加到pom.xml中的dependency元素,并相应地更改版本以实现匹配:
com.ibm.db2.jcc db2jcc4 4.24.92
创建示例表
对于本快速指南,我们只使用一个数据库和一个表。
使用Db2命令提示符连接到Db2实例,并发出以下SQL语句创建things表并填充一些数据:
createtablethings(idint,namevarchar(255)) insertintothings(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类
在项目中,找到SpringBoot主应用程序类。
对于通过SpringInitializr创建的项目,主应用程序类以创建项目时提供的工件名称来命名。例如,如果通过com.example包命名工件demo,您将在src/main/java/com/example/DemoApplication.java目录下找到主类。
对于通过IBMCloud开发者工具创建的项目,主应用程序类始终位于src/main/java/application/SBApplication.java目录下。
在与应用程序类相同的目录下,为JPA类jpa创建一个目录。
在jpa目录下,创建表示表行的类。该类应该与您之前创建的表使用相同的名称。
importjavax.persistence.Entity; importjavax.persistence.Id; @Entity publicclassThings{ @Id privateLongid; privateStringname; publicThings(){ } @Override publicStringtoString(){ returnString.format("Things[id=%d,name='%s']",id,name); } }
在与该类相同的目录下,创建用于访问数据的Repository类。接口用您刚才创建的类的类型。
importjava.util.List; importorg.springframework.data.repository.CrudRepository; publicinterfaceRepositoryextendsCrudRepository{ List findByName(Stringname); Iterable findAll(); }
将JPA类的简单调用添加到RestController
对于通过SpringInitializr创建的项目,您必须创建自己的RestController类。在jpa目录旁创建一个控制器目录,然后在该目录下创建RestController类。
对于通过IBMCloud开发者工具创建的项目,在src/main/java/application/rest/v1/Example.java中已为您提供RestController示例。
RestController为您的应用程序提供REST端点。使用@Autowired将仓库注入到RestController中,然后添加一个可以返回表中数据的简单端点:
importorg.springframework.beans.factory.annotation.Autowired; importorg.springframework.web.bind.annotation.RequestMapping; importorg.springframework.web.bind.annotation.RestController; importorg.springframework.http.HttpStatus; importorg.springframework.http.ResponseEntity; importorg.springframework.web.bind.annotation.ResponseBody; importjava.util.ArrayList; importjava.util.List; @RestController publicclassExample{ @Autowired Repositoryrepo; @RequestMapping("test") public@ResponseBodyResponseEntityexample(){ List list=newArrayList<>(); list.add("Tabledata..."); for(Thingsthings:repo.findAll()){ list.add(things.toString()); } returnnewResponseEntity (list.toString(),HttpStatus.OK); } }
您可能需要为之前创建的Things和Repository类添加导入功能。
运行该示例
您可以像运行任何其他SpringBoot应用程序一样运行该示例。
mvnspring-boot:run
然后,您可以访问此端点,查看它查询数据库和检索信息的情况。
$curlhttp://localhost:8080/test [Tabledata...,Things[id=1,name='fish'],Things[id=2,name='wibble'],Things[id=3,name='stiletto']]
总结
通过使用Spring自动配置和SpringBoot属性,SpringBoot能够使我们以Spring原生方式轻松地配置和使用Db2实例。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。