springboot整合oracle并实现多数据源

打印 上一主题 下一主题

主题 833|帖子 833|积分 2499

前文:
        工作之余忽然想写一个springboot+oracle+vue的项目,想把工作老掉牙的spring+struts+jsp项目给换掉!老项目维护起来真难熬啊!新项目开始的时间遇到了多数据源的问题,网上找了很多多少代码案例,但是都没有解决问题!于是总结了一个demo,方便大家学习使用!
1.项目准备

1.项目创建

我这里是直接用的maven项目,然后自己导入的依靠!

2.导入依靠

项目结构如下:

导入依靠:
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <project xmlns="http://maven.apache.org/POM/4.0.0"
  3.          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4.          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  5.     <modelVersion>4.0.0</modelVersion>
  6.     <groupId>org.example</groupId>
  7.     <artifactId>demo</artifactId>
  8.     <version>1.0-SNAPSHOT</version>
  9.     <properties>
  10.         <maven.compiler.source>8</maven.compiler.source>
  11.         <maven.compiler.target>8</maven.compiler.target>
  12.     </properties>
  13.     <parent>
  14.         <groupId>org.springframework.boot</groupId>
  15.         <artifactId>spring-boot-starter-parent</artifactId>
  16.         <version>2.7.17</version>
  17.         <relativePath/> <!-- lookup parent from repository -->
  18.     </parent>
  19.     <dependencies>
  20.         <!--Web依赖-->
  21.         <dependency>
  22.             <groupId>org.springframework.boot</groupId>
  23.             <artifactId>spring-boot-starter-web</artifactId>
  24.         </dependency>
  25.         <!--lombok依赖-->
  26.         <dependency>
  27.             <groupId>org.projectlombok</groupId>
  28.             <artifactId>lombok</artifactId>
  29.             <version>1.18.22</version>
  30.             <scope>provided</scope>
  31.         </dependency>
  32.         <!--jdbc依赖-->
  33.         <dependency>
  34.             <groupId>org.springframework.boot</groupId>
  35.             <artifactId>spring-boot-starter-jdbc</artifactId>
  36.         </dependency>
  37.         <!--oracle依赖-->
  38.         <dependency>
  39.             <groupId>com.oracle.database.jdbc</groupId>
  40.             <artifactId>ojdbc8</artifactId>
  41.             <version>19.3.0.0</version>
  42.         </dependency>
  43.     </dependencies>
  44. </project>
复制代码
3.添加配置文件

新建一个application.properties
  1. # database1
  2. spring.datasource.primary.url=jdbc:oracle:thin:@localhost:1521:orcl20
  3. spring.datasource.primary.username=test1
  4. spring.datasource.primary.password=test1
  5. spring.datasource.primary.driver-class-name=oracle.jdbc.driver.OracleDriver
  6. # database2
  7. spring.datasource.secondary.url=jdbc:oracle:thin:@localhost:1521:orcl3
  8. spring.datasource.secondary.username=test2
  9. spring.datasource.secondary.password=test2
  10. spring.datasource.secondary.driver-class-name=oracle.jdbc.driver.OracleDriver
复制代码

4.启动类创建

创建com.xyl.Application.java文件
  1. package com.xyl;
  2. import org.springframework.boot.SpringApplication;
  3. import org.springframework.boot.autoconfigure.SpringBootApplication;
  4. @SpringBootApplication
  5. public class Application {
  6.     public static void main(String[] args) {
  7.         SpringApplication.run(Application.class,args);
  8.     }
  9. }
复制代码

5.数据源配置类

创建com.xyl.config.DataSourceConfig.java文件
  1. package com.xyl.config;
  2. import com.zaxxer.hikari.HikariConfig;
  3. import com.zaxxer.hikari.HikariDataSource;
  4. import org.springframework.beans.factory.annotation.Qualifier;
  5. import org.springframework.beans.factory.annotation.Value;
  6. import org.springframework.context.annotation.Bean;
  7. import org.springframework.context.annotation.Configuration;
  8. import org.springframework.jdbc.core.JdbcTemplate;
  9. import javax.sql.DataSource;
  10. @Configuration
  11. public class DataSourceConfig {
  12.     @Bean(name = "primaryDataSource")
  13.     public DataSource primaryDataSource(@Value("${spring.datasource.primary.url}") String url,
  14.                                         @Value("${spring.datasource.primary.username}") String username,
  15.                                         @Value("${spring.datasource.primary.password}") String password,
  16.                                         @Value("${spring.datasource.primary.driver-class-name}") String driverClassName) {
  17.         HikariConfig config = new HikariConfig();
  18.         config.setJdbcUrl(url);
  19.         config.setUsername(username);
  20.         config.setPassword(password);
  21.         config.setDriverClassName(driverClassName);
  22.         return new HikariDataSource(config);
  23.     }
  24.     @Bean(name = "secondaryDataSource")
  25.     public DataSource secondaryDataSource(@Value("${spring.datasource.secondary.url}") String url,
  26.                                           @Value("${spring.datasource.secondary.username}") String username,
  27.                                           @Value("${spring.datasource.secondary.password}") String password,
  28.                                           @Value("${spring.datasource.secondary.driver-class-name}") String driverClassName) {
  29.         HikariConfig config = new HikariConfig();
  30.         config.setJdbcUrl(url);
  31.         config.setUsername(username);
  32.         config.setPassword(password);
  33.         config.setDriverClassName(driverClassName);
  34.         return new HikariDataSource(config);
  35.     }
  36.     @Bean(name = "oneTemplate")
  37.     public JdbcTemplate primaryJdbcTemplate(@Qualifier("primaryDataSource") DataSource dataSource) {
  38.         return new JdbcTemplate(dataSource);
  39.     }
  40.     @Bean(name = "twoTemplate")
  41.     public JdbcTemplate secondaryJdbcTemplate(@Qualifier("secondaryDataSource") DataSource dataSource) {
  42.         return new JdbcTemplate(dataSource);
  43.     }
  44. }
复制代码
6.dao和controller创建

这里为了测试,只创建dao和controller类,接口也没去写。大家工作和学习中万万别学我这样啊!
com.xyl.dao.TestDao.java
com.xyl.controller.TestController.java
  1. package com.xyl.dao;
  2. import lombok.extern.slf4j.Slf4j;
  3. import org.springframework.beans.factory.annotation.Autowired;
  4. import org.springframework.jdbc.core.JdbcTemplate;
  5. import org.springframework.stereotype.Repository;
  6. import javax.annotation.Resource;
  7. import java.util.List;
  8. import java.util.Map;
  9. @Slf4j
  10. @Repository
  11. public class TestDao {
  12.     @Resource
  13.     private JdbcTemplate oneTemplate;
  14.     @Resource
  15.     private JdbcTemplate twoTemplate;
  16.     public List<Map<String,Object>> getTest(){
  17.         String sql = " select * from AAA where ROWNUM <= 10";
  18.         List<Map<String, Object>> tableData = oneTemplate.queryForList(sql);
  19.         log.info("这是在database1中获取的数据:{}",tableData);
  20.         sql = " select * from AA  where ROWNUM <= 10";
  21.         return twoTemplate.queryForList(sql);
  22.     }
  23. }
复制代码

  1. package com.xyl.controller;
  2. import com.xyl.dao.TestDao;
  3. import org.springframework.web.bind.annotation.RequestMapping;
  4. import org.springframework.web.bind.annotation.RestController;
  5. import javax.annotation.Resource;
  6. import java.util.List;
  7. import java.util.Map;
  8. @RequestMapping("/test")
  9. @RestController
  10. public class TestController {
  11.     @Resource
  12.     private TestDao testDao;
  13.     @RequestMapping("/get")
  14.     public List<Map<String,Object>> getTest(){
  15.         return testDao.getTest();
  16.     }
  17. }
复制代码
7.启动项目看运行结果 




 抱歉哈,database2里面AA表忘记添加数据啦!
总结:demo到这里就已经结束啦。盼望可能帮到各位!

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

吴旭华

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表