Spring Boot对接Oracle数据库

最近学习了Oracle数据库,那么如何使用Spring Boot和MyBatis Plus对接Oracle数据库呢?

这就有了这篇随记,具体流程如下

1、创建Maven工程

创建一个空的Maven工程,导入如下依赖:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.3.7.RELEASE</version>
<relativePath/>
</parent>
<groupId>org.example</groupId>
<artifactId>oracle-init</artifactId>
<version>1.0-SNAPSHOT</version> <properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
<version>2.3.7.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<version>2.3.7.RELEASE</version>
</dependency>
<!-- Oracel11g与ojdbc5/ojdbc6版本匹配 -->
<dependency>
<groupId>com.oracle.database.jdbc</groupId>
<artifactId>ojdbc6</artifactId>
<version>11.2.0.4</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.16.10</version>
<scope>provided</scope>
</dependency> <!-- <dependency>-->
<!-- <groupId>com.oracle.database.jdbc</groupId>-->
<!-- <artifactId>ojdbc8</artifactId>-->
<!-- <version>19.8.0.0</version>-->
<!-- </dependency>-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.5.3.2</version>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter</artifactId>
<version>RELEASE</version>
<scope>compile</scope>
</dependency>
</dependencies>
</project>

tips:这里碰到一个坑,我本机适用的Oracle数据库版本是11g XE,所以要使用的驱动为ojdbc5/ojdbc6,不然连接老会失败。

2、application.yml

在配置文件中填写数据库连接的参数

spring:
datasource:
username: pp
password: 123456
url: jdbc:oracle:thin:@localhost:1521:XE
driver-class-name: oracle.jdbc.OracleDriver

参数说明:

  • username:数据库连接用户名
  • password:数据库连接密码
  • url:连接地址
  • driver-class-name:数据库驱动

3、创建实例数据表

为了演示本次对接Oracle数据库,我们需要一张测试数据表

3.1创建Users数据表,SQL如下:

CREATE TABLE users (
id INT PRIMARY KEY,
username VARCHAR(50) NOT NULL,
password VARCHAR(50) NOT NULL,
email VARCHAR(100) NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

什么?没有测试数据!!!Orz......

这里可以使用Oracle数据库的PL/SQL编程来批量生成测试数据,真香!!

3.2PL/SQL批量生产测试数据

sql如下:

DECLARE
TYPE user_type IS RECORD (
id NUMBER,
username VARCHAR2(50),
email VARCHAR2(100),
password VARCHAR2(100),
created_at DATE
); TYPE user_list IS TABLE OF user_type; l_users user_list := user_list();
BEGIN
FOR i IN 1..100 LOOP
l_users.extend;
l_users(i).id := i;
l_users(i).username := 'user' || i;
l_users(i).email := 'user' || i || '@example.com';
l_users(i).password := 'password' || i;
l_users(i).created_at := SYSDATE; -- 使用当前时间作为创建时间
END LOOP; FORALL i IN 1..l_users.COUNT
INSERT INTO users (id, username, email, password, created_at)
VALUES (l_users(i).id, l_users(i).username, l_users(i).email, l_users(i).password, l_users(i).created_at); COMMIT;
DBMS_OUTPUT.PUT_LINE('Data inserted successfully.');
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE('Error: ' || SQLERRM);
ROLLBACK;
END;

执行之后查看数据表中的数据:



OK!准备工作完成,接下来就可以进行对接了。

4、使用MP对Oracle进行CRUD

4.1创建实体类

User:

/**
* TODO User实体类
* @version 1.0
* @author ss_419
* @date 2023/8/11 14:49
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
// 指定Oracle数据库中的表名
@TableName("users")
public class User {
private Long id;
private String username;
private String password;
private String email;
private Date created_at;
}

4.2、创建Mapper

/**
* @author ss_419
*/
@Mapper
public interface UserRepository extends BaseMapper<User> {
// 这里可以自定义一些数据库操作方法
}

4.3、创建Service

/**
* @author ss_419
*/
@Service
public class UserService
extends ServiceImpl<UserRepository, User> {
// 这里可以编写一些业务逻辑方法
private final UserRepository userRepository; @Autowired
public UserService(UserRepository userRepository) {
this.userRepository = userRepository;
}
public List<User> getAllUsers() {
List<User> users = userRepository.selectList(null);
return users;
} public User getUserById(Long id) {
return userRepository.selectById(id);
} public void saveUser(User user) {
userRepository.insert(user);
} public void updateUser(User user) {
userRepository.updateById(user);
} public void deleteUser(Long id) {
userRepository.deleteById(id);
}
}

4.4、创建启动器

@SpringBootApplication
// Mapper包扫描
@MapperScan("org.example.mapper")
public class OracleDBApplication {
public static void main(String[] args) {
SpringApplication.run(OracleDBApplication.class,args);
}
}

5、测试

万事俱备,只欠东风,对CRUD进行测试。

@SpringBootTest
public class OraCTest {
@Autowired
private UserService service; /**
* 获取所有用户信息
*/
@Test
public void testGetAllUsers() {
List<User> users = service.getAllUsers();
users.forEach(System.out::println);
} /**
* 根据id获取用户
*/
@Test
public void testGetUserById() {
User userById = service.getUserById(1L);
System.out.println("userById = " + userById);
} /**
* 保存用户
*/
@Test
public void testSaveUser() {
User user = new User();
user.setId(1000L);
user.setUsername("测试新增User");
user.setPassword("00101010");
user.setEmail("test@example.com");
user.setCreated_at(new Date());
service.saveUser(user);
} /**
* 更新用户
*/
@Test
public void testUpdateUser() {
// 先查询
User user = service.getUserById(1000L);
System.out.println("userById = " + user);
// 后更新
user.setUsername("update_username");
service.updateUser(user);
} /**
* 根据id删除用户
*/
@Test
public void testDeleteUser() {
service.deleteUser(1000L);
}
}

Spring Boot对接Oracle数据库的更多相关文章

  1. Spring Boot 配置Oracle数据库

    1.添加oralce 依赖包,仓库没有则通过maven装载到本地仓库: 2.application.properties 中添加配置,特别是第一个配置项要严重注意! spring.jpa.databa ...

  2. Spring Boot开启Druid数据库监控功能

    Druid是一个关系型数据库连接池,它是阿里巴巴的一个开源项目.Druid支持所有JDBC兼容的数据库,包括Oracle.MySQL.Derby.PostgreSQL.SQL Server.H2等.D ...

  3. Spring Boot实战之数据库操作

    上篇文章中已经通过一个简单的HelloWorld程序讲解了Spring boot的基本原理和使用.本文主要讲解如何通过spring boot来访问数据库,本文会演示三种方式来访问数据库,第一种是Jdb ...

  4. Spring Boot初探之数据库访问

    一.背景 Spring boot是集服务发布.数据库管理.日志管理等于一身的服务开发框架:是微服务开发的全能小帮手.这章讲述一下如何使用spring boot访问MySQL数据库. 二.搭建基础环境 ...

  5. Spring Boot入门教程2-1、使用Spring Boot+MyBatis访问数据库(CURD)注解版

    一.前言 什么是MyBatis?MyBatis是目前Java平台最为流行的ORM框架https://baike.baidu.com/item/MyBatis/2824918 本篇开发环境1.操作系统: ...

  6. Spring Boot(二):数据库操作

    本文主要讲解如何通过spring boot来访问数据库,本文会演示三种方式来访问数据库,第一种是JdbcTemplate,第二种是JPA,第三种是Mybatis.之前已经提到过,本系列会以一个博客系统 ...

  7. 195. Spring Boot 2.0数据库迁移:Flyway

    [视频&交流平台] àSpringBoot视频:http://t.cn/R3QepWG à SpringCloud视频:http://t.cn/R3QeRZc à Spring Boot源码: ...

  8. # spring boot + mybatis 读取数据库

    spring boot + mybatis 读取数据库 创建数据库 use testdb; drop table if exists t_city; create table t_city( id i ...

  9. Spring Boot引入Oracle Jar

    Oracle数据库的驱动依赖,maven仓库并不提供,需要手动添加 1. 下载jar文件 如ojdbc7.jar文件 将该文件放在D:\oracle\ojdbc7.jar路径下 2.然后在命令行输入 ...

  10. Hello World 之Spring Boot 调用图数据库Neo4j

    明日歌 [清]钱鹤滩 明日复明日,明日何其多! 我生待明日,万事成蹉跎 1. 图数据库Neo4j之爱的初体验 ----与君初相识,犹似故人归 在如今大数据(big data)横行的时代,传统的关系型数 ...

随机推荐

  1. MES系统怎么实现车间管理中的生产计划和排产计划

    生产计划和排产计划都是制造企业中非常重要的概念,它们的目的是为了确保企业能够按时交付高质量的产品,同时还要保持生产效率和成本效益. 一.生产计划 生产计划是指制造企业为了满足客户需求而制定的计划,它包 ...

  2. Sliver 二开准备

    cs被杀麻了,最近打算看看一下sliver的源码进行一下二开,这篇是记录遇到的一些问题 编译sliver Windows下 官方说用MingW,但是我自己用他带的make不行, ​​ ‍ 下载make ...

  3. Python 潮流周刊第 34 期(摘要)

    本周刊由 Python猫 出品,精心筛选国内外的 250+ 信息源,为你挑选最值得分享的文章.教程.开源项目.软件工具.播客和视频.热门话题等内容.愿景:帮助所有读者精进 Python 技术,并增长职 ...

  4. DevOps常用工具全家桶,实现高效运维和交付

    DevOps常用工具全家桶,实现高效运维和交付 1.DevOps发展 DevOps发展背景: 随着互联网技术的快速发展,软件开发和运维的挑战也日益增加.传统的软件开发和运维模式往往存在分离.效率低下. ...

  5. (Dnc系列)借助Dnc.Events.InMemory在三分钟实现一个内存级别的事件驱动处理模型

    前言 Dnc.Events是在借鉴领域驱动设计大佬daxnet的博客基础上做的基于内存级别的EDA处理模型,不清楚EDA的童鞋请自行百度. 第一分钟 安装Nuget Dnc.Events.InMemo ...

  6. 记一次uboot编译/经验/教训

    记一次uboot编译/经验/教训 - 最近学习uboot移植有关的知识,在了解原理后自己编译uboot,但是出现了好多各式各样的错误,最后换了几次系统环境之后才找到错误来源 1.准备源码与交叉编译工具 ...

  7. 15、Flutter 按钮组件

    按钮组件的属性 ButtonStylee里面的常用的参数 ElevatedButton ElevatedButton 即"凸起"按钮,它默认带有阴影和灰色背景.按下后,阴影会变大 ...

  8. windows环境下如何优雅搭建ftp服务?

    目录 0. 前言 1.ftp简介 2.下载Apache FTPServer 3.下载并解压压缩包 4.修改配置文件 4.1 修改users.properties配置文件 4.2 修改ftpd-typi ...

  9. 干货分享丨轻松玩转 Huawei LiteOS 传感框架

    摘要:LiteOS传感框架将物联网终端设备上不同类型的传感器统一管理,通过抽象不同类型传感器接口,屏蔽其硬件细节,做到"硬件"无关性,非常方便于物联网设备的开发.维护和功能扩展. ...

  10. 华为云开天aPaaS 上线,服务千万开发者,使能行业场景化创新

    摘要:9月25日,华为云在华为全联接2021发布四大生态策略,并宣布2022年投入1亿美元升级沃土云创计划.华为云开天aPaaS正式上线,实现经验即服务,使能行业场景化创新. 本文分享自华为云社区&l ...