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

albedo开源框架配置多数据源

前言:

公司框架项目一直都没认真阅读过,最近项目需要连接oracle数据,所以尝试使用框架连接多数据库。

添加多数据源插件:

我们在项目的插件模块内添加多数据源插件:albedo-dynamic-datasource

<?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">
    <parent>
        <artifactId>albedo-plugins</artifactId>
        <groupId>com.albedo.java</groupId>
        <version>2.0.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>
    <artifactId>albedo-dynamic-datasource</artifactId>
    <dependencies>
        <!--dynamic datasource多数据源配置-->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>dynamic-datasource-spring-boot-starter</artifactId>
            <version>${dynamic-datasource.version}</version>
        </dependency>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid-spring-boot-starter</artifactId>
            <version>${druid-spring-boot-starter.version}</version>
        </dependency>
        <!--oracle数据驱动-->
        <dependency>
            <groupId>com.oracle.ojdbc</groupId>
            <artifactId>ojdbc8</artifactId>
            <version>${oracle.ojdbc.version}</version>
        </dependency>
        <!--oracle数据库字符集-->
        <dependency>
            <groupId>com.oracle.ojdbc</groupId>
            <artifactId>orai18n</artifactId>
            <version>${oracle.ojdbc.version}</version>
        </dependency>
<!--        如下提供了几种链接sqlserver驱动的方式:yml配置信息参见:https://blog.csdn.net/aw4269/article/details/102267192-->
<!--        driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver-->
<!--        url: jdbc:sqlserver://localhost:1433;databaseName=weighbridge;autoReconnectForPools=true;encrypt=true;trustServerCertificate=true-->
<!--        username: root-->
<!--        password: XunShi@123-->
        <!--使用 mssql-jdbc连接sqlserver-->
        <dependency>
            <groupId>com.microsoft.sqlserver</groupId>
            <artifactId>mssql-jdbc</artifactId>
            <version>11.2.1.jre8</version>
        </dependency>
        <!--使用 jtds 连接sqlserver-->
<!--        <dependency>-->
<!--            <groupId>net.sourceforge.jtds</groupId>-->
<!--            <artifactId>jtds</artifactId>-->
<!--            <version>1.2.4</version>-->
<!--        </dependency>-->
    </dependencies>
</project>

在API模块使用多数据源插件:

        <!--自定义插件 多数据源配置应用-->
        <dependency>
            <groupId>com.albedo.java</groupId>
            <artifactId>albedo-dynamic-datasource</artifactId>
            <version>${project.release.version}</version>
        </dependency>

配置文件编写

spring:
  profiles:
    active: local
    include:
      - swagger
      - jwt
  redis:
    host: localhost
    port: 6379
    password: XunShi123
    database: 2
  datasource:
#    type: com.zaxxer.hikari.HikariDataSource
#    driver-class-name: com.mysql.cj.jdbc.Driver
#    username: root
#    password: XunShi123
#    url: jdbc:mysql://localhost:3306/albedo-liangpeng?characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&allowMultiQueries=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true
    dynamic:
      primary: master #设置默认的数据源或者数据源组,默认值即为master
      strict: false #严格匹配数据源,默认false. true未匹配到指定数据源时抛异常,false使用默认数据源
      lazy: true
      datasource:
        master:
          driver-class-name: com.mysql.cj.jdbc.Driver
          username: root
          password: XunShi123
          url: jdbc:mysql://localhost:3306/albedo-liangpeng?characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&allowMultiQueries=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true
        oracletest:
          driver-class-name: oracle.jdbc.driver.OracleDriver
          username: ZHGK_XS
          password: ZHGK_XS
          url: jdbc:oracle:thin:@192.168.0.113:31359/EE.oracle.docker
          druid:
            validation-query: select 1 FROM DUAL
        sqlservertest:
          driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
          url: jdbc:sqlserver://localhost:1433;databaseName=weighbridge;autoReconnectForPools=true;encrypt=true;trustServerCertificate=true
          username: root
          password: XunShi@123
  web:
    root:
      prefix: /albedo-admin/dist/

启动类忽略默认驱动加载:@SpringBootApplication(exclude = DruidDataSourceAutoConfigure.class)

查询测试:

注意

  1. oracle的表名和字段名一定要大写,否则查询会报错。(或者手写查询需要用""包裹相关的表名和字段名 select * from "sys_log_login"

  1. 数据传输同步表结构:将mysql的表同步至oracle和sqlserver,可使用navcate工具->数据传输直接进行。

  1. 逆向模型同步表结构:oracle表结构同步也可使用,navcate工具,右键->逆向表到模型->文件->转换模型为->选择对应的要转换的对象->文件导出sql,然后导入到对应的oracle数据库中。

  1. 项目框架模块式加载和卸载,一定要仔细梳理各个模块的pom文件找到对应关系。 比如版本号都是在项目的根目录的pom文件进行定义的。

  1. 项目mysql数据库一定要有,不能丢失原本的意义。如果想使用代码生成其它类型的数据库,建议操作为将其它数据库同步一份表结构到mysql数据库中进行代码快速生成后再自己写业务逻辑。(如果尝试修改代码生成,在模块albedo-common-gen里面去修改控制器都加上注解@DS("xxxx"),进行尝试,但是有点得不偿失浪费生命!!!)


http://www.kler.cn/a/2292.html

相关文章:

  • 【计算机网络】【网络层】【习题】
  • 24/11/13 算法笔记<强化学习> DQN算法
  • 微信小程序=》基础=》常见问题=》性能总结
  • 机器情绪及抑郁症算法
  • Elasticsearch(ES)简介
  • dapp获取钱包地址,及签名
  • 乐观锁和悲观锁 面试题
  • vue使用split()将字符串分割数组join()将数组转字符串reverse()将数组反转
  • Linux 总结9个最危险的命令,一定要牢记在心!
  • 通过DNS数据包解释DNS协议各个字段含义
  • Java中 ==和equals的区别是什么?
  • 流量分析-Wireshark -操作手册(不能说最全,只能说更全)
  • Golang每日一练(leetDay0012)
  • 让项目干系人满意的3大要点
  • list底层的简单实现(万字长文详解!)
  • 今天,我终于学懂了C++中的引用
  • 全网最全面,python自动化测试持续邮件集成,一步步详解......
  • 【Python_requests学习笔记(六)】基于requests模块构建免费代理IP池
  • 程序员的代码行数越少越好?
  • 【STL四】序列容器——vector容器
  • 【2023.3.18 美团校招】
  • 微前端(无界)
  • 今天面试了一个2年Java经验的
  • Selenium基础篇之不打开浏览器运行
  • 136. 只出现一次的数字
  • 第十四届蓝桥杯三月真题刷题训练——第 19 天