連接配接Oracle資料庫
-
添加依賴
Spring Boot項目添加MyBatis依賴和Oracle驅動:
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.2</version>
</dependency>
<dependency>
<groupId>com.oracle</groupId>
<artifactId>ojdbc6</artifactId>
<version>11.2.0.1.0</version>
</dependency>
此時可能會出現這個錯誤:Missing artifact com.oracle:ojdbc6:jar:11.2.0.1.0
這時候需要我們手動導jar包
- 導jar包
登入oracle,需要管理者身份
sqlplus / as sysdba
輸入賬号密碼

檢視目前資料庫版本資訊
本人的資料庫驅動的版本是11.2.0.1.0
下載下傳ojdbc6.jar,用maven指令手動添加到本地倉庫中
連結:https://pan.baidu.com/s/1NCrqcMlKFlP7QTBkV4UhjQ
提取碼:5xwj
自己選一個版本使用~~~~本人用的是ojdbc6的版本
在cmd運作一下指令
mvn install:install-file -DgroupId=com.oracle -DartifactId=ojdbc6 -Dversion=11.2.0.1.0 -Dpackaging=jar -Dfile=E:\ojdbc6.jar
其中Dfile是jar包的路徑(建議放在簡單的路徑,不要有特殊字元或中文)
3. 再次在項目中導入依賴
<dependency>
<groupId>com.oracle</groupId>
<artifactId>ojdbc6</artifactId>
<version>11.2.0.1.0</version>
</dependency>
此時錯誤解決。
- 再去yml檔案配置資訊
server:
port: 9090
servlet:
context-path: /test
spring:
application:
name: test
# 資料源
datasource:
url: jdbc:oracle:thin:@localhost:1521:orcl
username: root
password: 123456
type: com.alibaba.druid.pool.DruidDataSource
driver-class-name: oracle.jdbc.driver.OracleDriver
這樣子就可以連接配接上oracle 了
Mysql、Oracle、SQL Server 相容
1、SpringBoot啟動類中添加:
@Bean
public DatabaseIdProvider getDatabaseIdProvider() {
DatabaseIdProvider databaseIdProvider = new VendorDatabaseIdProvider();
Properties properties = new Properties();
properties.setProperty("MySQL", "mysql");
properties.setProperty("Oracle", "oracle");
properties.setProperty("SQL Server", "sqlserver");
databaseIdProvider.setProperties(properties);
return databaseIdProvider;
}
2、Mybatis的xml标簽中增加databaseId="mysql"或者databaseId=“oracle”,例如:
<select id="createTable" useCache="false" resultType="int" databaseId="mysql">
CREATE TABLE ${tableName} (
`id` varchar(64) DEFAULT NULL COMMENT '辨別',
`create_date` datetime DEFAULT NULL COMMENT '建立時間',
`create_user_id` varchar(64) DEFAULT NULL COMMENT '建立人id',
`create_user_name` varchar(64) DEFAULT NULL COMMENT '建立人姓名',
`last_update_date` datetime DEFAULT NULL COMMENT '最後更新時間',
`last_update_user_id` varchar(64) DEFAULT NULL COMMENT '最後更新人id',
`last_update_user_name` varchar(64) DEFAULT NULL COMMENT '最後更新人姓名'
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT = #{name};
</select>
<select id="createTable" useCache="false" resultType="int" databaseId="oracle">
CREATE TABLE ${tableName} (
`id` varchar(64) DEFAULT NULL COMMENT '辨別',
`create_date` datetime DEFAULT NULL COMMENT '建立時間',
`create_user_id` varchar(64) DEFAULT NULL COMMENT '建立人id',
`create_user_name` varchar(64) DEFAULT NULL COMMENT '建立人姓名',
`last_update_date` datetime DEFAULT NULL COMMENT '最後更新時間',
`last_update_user_id` varchar(64) DEFAULT NULL COMMENT '最後更新人id',
`last_update_user_name` varchar(64) DEFAULT NULL COMMENT '最後更新人姓名'
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT = #{name};
</select>
3、如果邏輯層需要區分資料庫
在邏輯層加上變量:
(本人試過在實體類添加,無法指派,隻好在邏輯層添加)
@Value("${my.database}")
private String database;
同時邏輯層方法中判斷:
if (StringUtils.isNotEmpty(database) && database.equals("oracle")) {
wrapper.between("to_char(a.date,'yyyy-mm-dd hh24:mi:ss')", dto.getStartDate() + " 00:00:00", dto.getEndDate() + " 23:59:59");
} else {
wrapper.between("a.date", dto.getStartDate() + " 00:00:00", dto.getEndDate() + " 23:59:59");
}
需要在yml檔案設定值:
my:
database: oracle
這樣就可以相容Oracle和MySQL
(中間有蠻多的資料庫特有的文法要修改)
連接配接SQL Server時的錯誤
在連接配接SQL Server時,一直報錯連接配接不上,錯誤如下圖:
我一直把關注點放在2上面,一直百度2的錯誤(Unable to start web server; ),一直都沒有解決。
後面經提醒,才知道關注點應該是1(對象名 ‘sys.sequences’ 無效。),我看錯重點了~~~~
發現jpa對于資料庫的版本識别出了問題。
·
查閱jpa的配置參數spring.jpa.database-platform能用來指定資料庫版本。
·
在application.properties檔案中,配置
spring.jpa.database-platform=org.hibernate.dialect.SQLServer2008Dialect
這樣才連接配接上了SQL Server~~~~
參考文章:
SpringBoot + Mybatis 采用DatabaseIdProvider配置支援不同資料庫
解決Maven導入Oracle驅動出現Missing artifact com.oracle:ojdbc6:jar:11.2.0.1.0
JPA在sqlserver2008下缺少sys.sequences的解決辦法