2,springboot集成oracle数据库
前面,我们已经在本地创建了oracle表空间、登录用户和一张用户表:https://www.cnblogs.com/seeall/p/14016491.html
1,测试一下数据库连接
结果,说明数据库连接没有问题。
2,使用数据库连接池
以druid为例:
2.1,pom引入druid(有数据库连接池功能)相关依赖
<!-- druid 数据库连接池 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.23</version>
</dependency>
2.2,在springboot项目的配置文件appllication.yml或者appllication.properties配置数据源和连接池属性
遇到的问题:
a,从别的地方copy过来要特别注意空格和回车,不然属性会获取不到,手打基本没问题;
b,bootstrap.yml文件不生效,是因为bootstrap.yml是springcloud的配置文件,springcloud是基于springboot的,
只有在springcloud项目中bootstrap.yml会比application.yml优先级高,而此处不生效是因为此时的项目仍然为springboot项目,
不是springcloud项目,按网上的说法,pom引入spring-cloud-context依赖后,仍然在install过程中报错了,此处就先不管了,
等以后提升到springcloud项目后,再分析为什么bootstrap.yml不生效;
2.3,使用步骤2.2中配置,注入数据源
@ConfigurationProperties是springboot的注解,通过这个注解,项目可以获取到对应的配置属性,并返回数据源,
不需要你手动set url/driver/username/password;
遇到的问题:自动扫描的类中,如controller层和service层的类,无法注入上面的数据源bean,反而普通的类(非扫描范围里的类)可以注入
最后曲线救国,使用以下步骤2.4的方式在扫描范围里的类可以注入“数据源”;
2.4,使用步骤2.3的数据源生成JdbcTemplate
首先,pom引入jdbcTemplate相关的jar包:
<!-- 使用JdbcTemplate需要的jar包 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
</dependency>
遇到的问题;
spring-tx下有红色波浪线,install无法下载spring-tx,是因为我的maven的settings配置文件配了3个镜像,从其中一个下载失败后,就不去其他镜像下载了;
而我的另一个项目,同样的依赖,从其中一个下载失败后,还会去其他镜像下载,直到成功;最后我在settings文件里,只保留了能成功下载的镜像,更新依赖后就好了,如下:
,原因未知,和镜像的选择策略有关,可以去网上看看;
其次,
遇到的问题:
1,controller无法引入service层的类,是因为service层的类不在扫描范围内,加入扫描就可以了,如下:
2,奇怪的是,步骤2.3中数据源那个bean无法在controller或service注入,但是jdbcTemplate的bean可以在controller和service中注入,
他们之间就差了一个@ConfigurationProperties注解,原因有待考证?
2.5,看下效果