springboot连接Oracle的注意点(数据库信息配置、主键精度问题、OJDBC jar包、Oracle主键自增问题)

开篇废话:(前段时间因为太忙没有坚持写博客,导致很久没有更新,今天终于忙里偷闲写上一篇)

最近做了一个项目,数据库用的是Oracle,由于之前一直用的是MySQL,所以在一些细节配置上不是很熟练,导致踩了很多坑。

1.  数据库信息配置:

         在Oracle中,分为sid和serviceName,

          SID:一个数据库可以有多个实例(如RAC),SID是用来标识这个数据库内部每个实例的名字,就好像一个部门里,每个人都有一个自己的名字。

         SERVICE_NAME:是这个数据库对外宣称的名字,外面的人要想连接我这个数据库,
你就在客户端的连接串里写上service_name。它就像一个部门的名字,这个部门的名称在保安(listener)那里有登记,保安看到是要找SERVICE_NAME这个部门,就告诉你我们公司确实有这个部门,于是你就找到了,连接就建立了。

在连接上url上, : (冒号) 加SID, / (斜杠) 加serviceName

2. 主键精度问题:

   Cause:java.sql.SQLDataException:ORA-01438:值大于此列指定的允许精度

 由于项目采用的是mybatisplus,所以是用的框架自带的主键生成策略,所以超过了建表时设置的number值。下面是MySQL和Oracle的数值对照表:

 3. OJDBC jar包:

        因为maven中央仓库没有提供Oracle相关的jar包下载,所以需要自行去官网下载与数据库版本相对应的jar包。

官网地址:https://www.oracle.com/database/technologies/appdev/jdbc-downloads.html

阿里云盘:https://www.aliyundrive.com/s/H7SFeRrfSyn 提取码: w6p2 (我的版本是ojdbc6.jar, 数据库是Oracle11G)


方式一: 下载完jar包之后,需要手动将jar包导入进本地仓库,用mvn命令

 mvn install:install-file -DgroupId=com.oracle -DartifactId=ojdbc6 -Dversion=11.2.0.4 -Dpackaging=jar -Dfile=你电脑上jar包存放的位置

(这里的-DartifactId=ojdbc6 是可以自行修改的)

查看本地是否导入进来了

 导入进来后在pom文件中引入

        <dependency>
            <groupId>com.oracle</groupId>
            <artifactId>ojdbc6</artifactId>
            <version>11.2.0.4</version>
        </dependency>

记得刷新maven!

方式二:

1. 在项目src路径下新建文件夹,并将jar包放入之中

第二步: 在project structure选择刚刚创建的文件夹,然后将其加入至项目中

这是最简单也是最直接的方法,缺点就是如果下一次要用到的话,还需要重复以上这些操作。

4. Oracle主键自增问题

     在MySQL中,id可以直接设置自增长,而在Oracle中需要设置序列

   ① 以navicat为例进行演示:

 ② 编写配置类

@Configuration
public class KeyGeneratorConfig {

    @Bean
    public IKeyGenerator keyGenerator(){
        return new OracleKeyGenerator();
    }
}

 ③ 实体类配置


以上就是我连接Oracle数据库时遇到的坑,都给填了,如果屏幕前的你有什么问题欢迎下方评论区进行讨论。

写的不好,文笔拙劣,如果对您有帮助,并解决了问题,希望您能点一个赞!谢谢!!!

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值