0


Spring Boot对接Oracle数据库

Spring Boot对接Oracle数据库

最近学习了Oracle数据库,那么如何使用Spring Boot和MyBatis Plus对接Oracle数据库呢?
这就有了这篇随记,具体流程如下

1、创建Maven工程

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

<?xml version="1.0" encoding="UTF-8"?><projectxmlns="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:123456url: jdbc:oracle:thin:@localhost:1521:XE
      driver-class-name: oracle.jdbc.OracleDriver

参数说明:

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

3、创建实例数据表

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

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

CREATETABLE users (
  id INTPRIMARYKEY,
  username VARCHAR(50)NOTNULL,
  password VARCHAR(50)NOTNULL,
  email VARCHAR(100)NOTNULL,
  created_at TIMESTAMPDEFAULTCURRENT_TIMESTAMP);

什么?没有测试数据!!!Orz…
这里可以使用Oracle数据库的PL/SQL编程来批量生成测试数据,真香!!

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

sql如下:

DECLARETYPE user_type IS RECORD (
    id NUMBER,
    username VARCHAR2(50),
    email VARCHAR2(100),
    password VARCHAR2(100),
    created_at DATE);TYPE user_list ISTABLEOF user_type;

  l_users user_list := user_list();BEGINFOR i IN1..100LOOP
    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;-- 使用当前时间作为创建时间ENDLOOP;

  FORALL i IN1..l_users.COUNT
    INSERTINTO 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")publicclassUser{privateLong id;privateString username;privateString password;privateString email;privateDate created_at;}

4.2、创建Mapper

/**
 * @author ss_419
 */@MapperpublicinterfaceUserRepositoryextendsBaseMapper<User>{// 这里可以自定义一些数据库操作方法}

4.3、创建Service

/**
 * @author ss_419
 */@ServicepublicclassUserServiceextendsServiceImpl<UserRepository,User>{// 这里可以编写一些业务逻辑方法privatefinalUserRepository userRepository;@AutowiredpublicUserService(UserRepository userRepository){this.userRepository = userRepository;}publicList<User>getAllUsers(){List<User> users = userRepository.selectList(null);return users;}publicUsergetUserById(Long id){return userRepository.selectById(id);}publicvoidsaveUser(User user){
        userRepository.insert(user);}publicvoidupdateUser(User user){
        userRepository.updateById(user);}publicvoiddeleteUser(Long id){
        userRepository.deleteById(id);}}

4.4、创建启动器

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

5、测试

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

@SpringBootTestpublicclassOraCTest{@AutowiredprivateUserService service;/**
     * 获取所有用户信息
     */@TestpublicvoidtestGetAllUsers(){List<User> users = service.getAllUsers();
        users.forEach(System.out::println);}/**
     * 根据id获取用户
     */@TestpublicvoidtestGetUserById(){User userById = service.getUserById(1L);System.out.println("userById = "+ userById);}/**
     * 保存用户
     */@TestpublicvoidtestSaveUser(){User user =newUser();
        user.setId(1000L);
        user.setUsername("测试新增User");
        user.setPassword("00101010");
        user.setEmail("[email protected]");
        user.setCreated_at(newDate());
        service.saveUser(user);}/**
     * 更新用户
     */@TestpublicvoidtestUpdateUser(){// 先查询User user = service.getUserById(1000L);System.out.println("userById = "+ user);// 后更新
        user.setUsername("update_username");
        service.updateUser(user);}/**
     * 根据id删除用户
     */@TestpublicvoidtestDeleteUser(){
        service.deleteUser(1000L);}}

本文转载自: https://blog.csdn.net/weixin_45688141/article/details/132233742
版权归原作者 七七r 所有, 如有侵权,请联系我们删除。

“Spring Boot对接Oracle数据库”的评论:

还没有评论