开篇废话:(前段时间因为太忙没有坚持写博客,导致很久没有更新,今天终于忙里偷闲写上一篇)
最近做了一个项目,数据库用的是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数据库时遇到的坑,都给填了,如果屏幕前的你有什么问题欢迎下方评论区进行讨论。
写的不好,文笔拙劣,如果对您有帮助,并解决了问题,希望您能点一个赞!谢谢!!!