当前位置: 首页 > news >正文

在 Spring Boot 项目中连接 IBM AS/400 数据库——详细案例教程

文章目录

    • 1. 添加 `jt400` 依赖
    • 2. 下载 `jt400` 驱动包
      • 依赖下载
      • 手动下载
        • 下载地址:
        • 手动下载 JAR 的步骤:
    • 3. 配置 application.properties 或 application.yml
      • (1)`application.properties`
      • (2)`application.yml`
    • 4. 数据源配置类(可选)
    • 5. 创建 `JDBC` 访问层
    • 6. 测试连接
    • 7. 启动项目
    • 总结

在 Spring Boot 项目中连接 IBM AS/400 数据库(又称 IBM i)需要使用 jt400 驱动。下面是一个完整的步骤和案例,包含包的获取、下载、导入和使用等过程。

1. 添加 jt400 依赖

pom.xml 中添加 jt400 的 Maven 依赖。jt400 是一个 JDBC 驱动程序,用于连接 IBM i(AS/400)的数据库。

<dependencies><!-- Spring Boot Starter JDBC --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-jdbc</artifactId></dependency><!-- jt400 JDBC Driver --><dependency><groupId>net.sf.jt400</groupId><artifactId>jt400</artifactId><version>10.5</version> <!-- 推荐最新版本 --></dependency>
</dependencies>

2. 下载 jt400 驱动包

依赖下载

添加依赖后,使用 Maven 的 mvn install 命令,Maven 会自动下载并引入 jt400 驱动包到你的项目中。

mvn install

手动下载

Maven 会根据 pom.xml 自动从 Maven Central 仓库下载 jt400 的 JAR 包。如果需要手动下载,可以从以下网站进行下载:

下载地址:
  1. Maven Central Repository:

    • 访问 Maven Central
    • 在页面中可以找到各个版本的 jt400 JAR 文件,并下载所需的版本。
  2. JT400 GitHub 仓库

    • 官方的项目源代码托管在 GitHub 上: JT400 GitHub
手动下载 JAR 的步骤:
  1. 访问 Maven Central jt400。
  2. 点击 Download 按钮,下载对应版本的 JAR 文件。
  3. 如果不使用 Maven 进行管理,可以将下载的 JAR 文件手动添加到项目的库路径中。

3. 配置 application.properties 或 application.yml

(1)application.properties

src/main/resources/application.properties 文件中配置数据库连接信息。

# AS/400 数据库配置
spring.datasource.url=jdbc:as400://<AS400_HOST>/<DATABASE>
spring.datasource.username=<USERNAME>
spring.datasource.password=<PASSWORD>
spring.datasource.driver-class-name=com.ibm.as400.access.AS400JDBCDriver# HikariCP Connection Pool 配置 (可选)
spring.datasource.hikari.maximum-pool-size=10
spring.datasource.hikari.minimum-idle=5
spring.datasource.hikari.idle-timeout=60000
spring.datasource.hikari.connection-timeout=30000
spring.datasource.hikari.max-lifetime=1800000
  • <AS400_HOST>:IBM AS/400 服务器的 IP 或域名。
  • <DATABASE>:AS/400 数据库的名称。
  • <USERNAME>:连接数据库的用户名。
  • <PASSWORD>:连接数据库的密码。

(2)application.yml

spring:datasource:url: jdbc:as400://<AS400_HOST>;databaseName=<DATABASE_NAME>username: <YOUR_USERNAME>password: <YOUR_PASSWORD>driver-class-name: com.ibm.as400.access.AS400JDBCDriverhikari:maximum-pool-size: 10jpa:hibernate:ddl-auto: noneshow-sql: true
  • 替换 <AS400_HOST> 为 AS/400 服务器的 IP 或主机名,
  • <DATABASE_NAME> 为你要连接的数据库名称
  • <YOUR_USERNAME> 和 <YOUR_PASSWORD> 为你的登录凭证。

4. 数据源配置类(可选)

如果你需要自定义配置数据源,可以在项目中创建一个 DataSourceConfig 类。

import com.zaxxer.hikari.HikariDataSource;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.jdbc.DataSourceBuilder;
import javax.sql.DataSource;@Configuration
public class DataSourceConfig {@Bean@ConfigurationProperties("spring.datasource")public DataSource dataSource() {return DataSourceBuilder.create().type(HikariDataSource.class).build();}
}

5. 创建 JDBC 访问层

Spring Boot 支持使用 JdbcTemplate 来简化对数据库的操作。你可以创建一个服务类来访问 AS/400 数据库。

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Service;import java.util.List;
import java.util.Map;@Service
public class AS400Service {@Autowiredprivate JdbcTemplate jdbcTemplate;public List<Map<String, Object>> getUsers() {String sql = "SELECT * FROM USERS";  // 假设 USERS 是 AS/400 中的一个表return jdbcTemplate.queryForList(sql);}
}

6. 测试连接

创建一个测试接口来验证数据库连接是否成功。

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;import java.util.List;
import java.util.Map;@RestController
public class AS400Controller {@Autowiredprivate AS400Service as400Service;@GetMapping("/users")public List<Map<String, Object>> getUsers() {return as400Service.getUsers();}
}

7. 启动项目

使用以下命令启动 Spring Boot 项目:

mvn spring-boot:run

然后访问 http://localhost:8080/users,如果一切配置正确,你将看到从 AS/400 数据库中检索到的数据。


总结

  1. 添加依赖:通过 Maven 添加 jt400 依赖。
  2. 配置文件:在 application.properties 中配置 AS/400 数据库的连接信息。
  3. 数据源配置(可选):使用自定义数据源配置类进行高级数据源配置。
  4. 业务逻辑:使用 JdbcTemplate 访问数据库。
  5. 测试:创建 REST API 以验证数据库连接。

这是一个完整的 Spring Boot 连接 AS/400 数据库的案例,可以根据你的实际需求进行扩展和修改。

希望对你有所帮助,若有问题欢迎指正~😊

相关文章:

在 Spring Boot 项目中连接 IBM AS/400 数据库——详细案例教程

文章目录 1. 添加 jt400 依赖2. 下载 jt400 驱动包依赖下载手动下载下载地址&#xff1a;手动下载 JAR 的步骤&#xff1a; 3. 配置 application.properties 或 application.yml&#xff08;1&#xff09;application.properties&#xff08;2&#xff09;application.yml 4. 数…...

VUE + NODE 历史版本安装

以node 12.20.0为例子&#xff0c;想下载哪个版本&#xff0c;后面写哪个版本 https://registry.npmmirror.com/binary.html?pathnode/v12.20.0/ 安装国内镜像7.1.0 cnpm npm install -g cnpm7.1.0 -g --registryhttps://registry.npmmirror.com 安装vue脚手架4.5.15 cnpm …...

git reset 几点疑问

疑问&#xff1a;使用 git reset --hard <commit-hash-from-branch-B> 将工作区状态reset为其他branch的某点。 如果当前工作区的分支&#xff08;比如 branch A&#xff09;上使用 git reset --hard 将其状态重置为另一个分支&#xff08;比如 branch B&#xff09;的某…...

Rust Windows下编译 静态链接VCRuntime140.dll

Rust 编译出来的exe默认动态链接VC运行库&#xff0c;分发电脑上需要安装有Microsoft Visual C Redistributable for Visual Studio 2015运行库。 编译时能静态链接进去&#xff0c;就省去客户端未安装运行库的问题。方法如下: 只需在当前根目录下新建.cargo\config.toml&#…...

从“天宫课堂”到人工智能:中国少儿编程的未来在哪里?

近日&#xff0c;中国载人航天“天宫课堂”第三次开讲&#xff0c;激发了全国数百万青少年对科技的热情。从航天技术到人工智能&#xff0c;科技的快速发展正不断改变我们的生活&#xff0c;也让越来越多的家长意识到&#xff0c;未来属于那些掌握编程和创新思维的孩子。与其让…...

ARM base instruction -- blr

BLR Branch with Link to Register calls a subroutine at an address in a register, setting register X30 to PC4. 带寄存器链接的分支在寄存器中的某个地址调用一个子程序&#xff0c;将寄存器 X30 (lr) 设置为 PC4。 BLR <Xn> BLR 跳转到reg内容地址&#xff0c;…...

宠物猫领养馆会员管理系统---附源码72579

目录 1 绪论 1.1 课题目的与意义 1.2国内外研究现状 1.3论文结构与章节安排 1.4 express框架介绍 2 宠物猫领养馆会员管理系统系统分析 2.1 可行性分析 2.1.1 技术可行性分析 2.1.2 经济可行性分析 2.1.3 操作可行性分析 2.2 系统功能分析 2.2.1 功能性分析 2.2.2 …...

驾驶员注意力分神状态检测系统源码分享

驾驶员注意力分神状态检测检测系统源码分享 [一条龙教学YOLOV8标注好的数据集一键训练_70全套改进创新点发刊_Web前端展示] 1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 项目来源AACV Association for the Advancement of …...

基于less和scss 循环生成css

效果 一、less代码 复制代码 item-count: 12; // 生成多少个 .item 类.item-loop(n) when (n > 0) {.icon{n} {background: url(../../assets/images/menu/icon{n}.png) no-repeat;background-size: 100% 100%;}.item-loop(n - 1);}.item-loop(item-count);二、scss代码 f…...

opencv之Canny边缘检测

文章目录 前言1.应用高斯滤波去除图像噪声2.计算梯度3.非极大值抑制4.应用双阈值确定边缘5.Canny函数及使用 前言 Canny边缘检测是一种流行的边缘检测算法&#xff0c;用于检测图像中的边缘。它通过一系列步骤将图像中的像素边缘突出显示出来&#xff0c;主要分为以下几个步骤…...

springBoot 集成https

springBoot 集成https 1、springBoot默认的证书格式 pring Boot 需要 .p12 或 .jks 格式的证书。如果你只有 .pem 和 .key 文件&#xff0c;可以使用 openssl 工具将它们转换成 .p12 文件 2、转换.p12 我的证书文件如下&#xff0c;需要转换 2.1 下载openssl https://slpr…...

数据库连接池与Druid【后端 16】

数据库连接池与Druid 在现代软件开发中&#xff0c;数据库连接池作为一种关键的技术手段&#xff0c;被广泛用于提升数据库访问的效率和稳定性。本文将深入探讨数据库连接池的概念、常见实现&#xff0c;并重点介绍我国阿里集团开源的数据库连接池——Druid&#xff0c;以及如何…...

C#使用Access数据库使用总结

话说这Access数据库确实是有点年代了&#xff0c;前面在深圳的一家放射医疗公司&#xff0c;数据库用的Access&#xff0c;后面在我的建议下&#xff0c;换成了SQLite。用SQLite多舒服&#xff0c;不用装Runtime&#xff0c;还可以用EF。Access得装Runtime&#xff0c;也用不了…...

使用Dataherald组件进行数据分析:从安装到查询的完整指南

使用Dataherald组件进行数据分析&#xff1a;从安装到查询的完整指南 引言 在当今数据驱动的世界中&#xff0c;能够快速、准确地从数据中获取洞察变得越来越重要。Dataherald是一个强大的工具&#xff0c;它可以帮助开发者和数据分析师更轻松地进行数据查询和分析。本文将详…...

sqlx1.3.4版本的问题

sqlx1.3.4版本存在问题&#xff0c;在调用sqlx的Select方法时&#xff0c;如果传入的dest是一个slice且slice不为空&#xff0c;查询结果将会追加在这个slice已有的元素后面。这位用户认为这个行为是“a little surprising”的&#xff0c;且与json 反序列化的表现不一致&#…...

Rust 编译器使用的 C++ 编译器吗?

Rust编译器并不直接使用C编译器&#xff0c;但它们之间可以存在交互&#xff0c;尤其是在Rust与C进行混合编程时。以下是关于Rust编译器和C编译器之间关系的详细解释&#xff1a; 1. Rust编译器的选择 Rust是一种现代化的系统级编程语言&#xff0c;它需要一个可靠的编译器来…...

Python计算机视觉 第10章-OpenCV

Python计算机视觉 第10章-OpenCV OpenCV 是一个C 库&#xff0c;用于&#xff08;实时&#xff09;处理计算视觉问题。实时处理计算机视觉的 C 库&#xff0c;最初由英特尔公司开发&#xff0c;现由 Willow Garage 维护。OpenCV 是在 BSD 许可下发布的开源库&#xff0c;这意味…...

多层感知机 (Multilayer Perceptron, MLP)

多层感知机 (Multilayer Perceptron, MLP) 通俗易懂算法 多层感知机&#xff08;Multilayer Perceptron&#xff0c;MLP&#xff09;是一种前馈人工神经网络。它的主要特点是由多层神经元&#xff08;或节点&#xff09;组成&#xff0c;包括至少一个隐藏层。MLP 是监督学习的…...

reg和wire的区别 HDL语言

文章目录 数据类型根本区别什么时候要定义wire小结 数据类型 HDL语言有三种数据类型&#xff1a;寄存器数据类型&#xff08;reg&#xff09;、线网数据类型&#xff08;wire&#xff09;、参数数据类型&#xff08;parameter&#xff09;。 根本区别 reg&#xff1a; 寄存器…...

前置声明和头文件之间的关系 问题

出现这些问题的原因是 ORB_SLAM3::MultiGraph 被前置声明了&#xff0c;但在使用的时候&#xff0c;编译器并没有看到 MultiGraph 类的完整定义。前置声明只能用于指针和引用&#xff0c;但如果要访问其成员函数或变量&#xff0c;必须包含完整的类定义。 解决方案步骤&#x…...

Linux02

1.相对路径和绝对路径 cd用于切换目录&#xff0c;对于路径可以用相对路径和绝对路径 例如&#xff1a;cd /home/user/public和cd public效果一样&#xff0c;都是将目录切换到HOME文件夹下的public文件夹 2.特殊路径符 .表示当前目录 ..表示上级目录 ~表示HOME目录 3.m…...

df 命令:显示磁盘空间使用情况

一、df 命令简介 ​df​命令用于显示文件系统的磁盘空间利用情况&#xff0c;包括文件系统的总空间、已用空间、可用空间以及挂载点信息。通过df​命令&#xff0c;用户可以快速了解系统中各个文件系统的空间使用情况。 ‍ 二、df 命令参数 df [选项] [目录/驱动器]选项&am…...

深入解析Go语言的容器包

在Go语言中&#xff0c;container标准包为开发者提供了三个非常有用的数据结构&#xff1a;堆&#xff08;heap&#xff09;、链表&#xff08;list&#xff09;和环&#xff08;ring&#xff09;。这些数据结构的实现分别位于container/heap、container/list和container/ring中…...

STM32 + W5500 实现HTTPS !

两点: 1. 让我们先站在操作系统之上的网络协议栈再之上来思考…… 2. 我们先简单粗暴地理解为:http + (加密)= https 先弄一个简单的HTTP网络客户端,连接服务器并读取默认页面。该应用程序可能如下所示: #include <sys/types.h> #include <sys/socket.h> …...

使用DuckDuckGo搜索API进行高效信息检索:Python实践指南

使用DuckDuckGo搜索API进行高效信息检索&#xff1a;Python实践指南 引言 在当今信息爆炸的时代&#xff0c;快速准确地获取所需信息变得越来越重要。DuckDuckGo作为一个注重隐私的搜索引擎&#xff0c;提供了强大的搜索API&#xff0c;让开发者能够轻松地将搜索功能集成到自…...

UE4_后期处理_后期处理材质四—场景物体描边

一、效果如下图&#xff1a; 二、分析&#xff1a; 回顾复习&#xff1a;在后期处理材质三中&#xff0c;我们通过计算开启自定义深度通道物体的像素点上下左右4个像素SceneTextureCustomDepth深度之和来判断物体的外部&#xff08;包含物体的边&#xff09;和内部&#xff0c…...

华为OD机试 - 推荐多样性(Python/JS/C/C++ 2024 E卷 100分)

华为OD机试 2024E卷题库疯狂收录中&#xff0c;刷题点这里 专栏导读 本专栏收录于《华为OD机试真题&#xff08;Python/JS/C/C&#xff09;》。 刷的越多&#xff0c;抽中的概率越大&#xff0c;私信哪吒&#xff0c;备注华为OD&#xff0c;加入华为OD刷题交流群&#xff0c;…...

梧桐数据库(WuTongDB):CBO(Cost-Based Optimizer)基于代价的优化器技术简介

CBO&#xff08;基于代价的优化器&#xff0c;Cost-Based Optimizer&#xff09;是现代数据库系统中最广泛使用的查询优化器之一。它通过计算执行查询时可能消耗的资源&#xff08;如CPU、内存、I/O&#xff09;来选择最优的执行计划&#xff0c;以提高查询性能。 1. CBO 的工…...

深入探索Go语言中的函数:匿名函数、指针参数与函数返回

1. Go语言中的函数 函数是任何编程语言中的核心元素&#xff0c;它们帮助我们将大型程序分解为更小的、易于管理的部分。在Go语言中&#xff0c;函数是通过 func 关键字定义的。理想的函数应当是独立的&#xff0c;完成单一任务。如果你发现某个函数正在执行多个任务&#xff…...

Android12_13左上角状态栏数字时间显示右移动

文章目录 问题场景解决问题 一、基础资料二、代码追踪三、解决方案布局的角度解决更改paddingStart 的默认值设置marginLeft 值 硬编码的角度解决 问题场景 1&#xff09;早期一般屏幕都是方形的&#xff0c;但是曲面屏&#xff0c;比如&#xff1a;好多车机Android产品、魔镜…...