MyBatis學習-使用Druid連線池將Maybatis整合到spring
阿新 • • 發佈:2020-08-17
[TOC]
## 前言
在[MyBatis學習-連線oracle實現CURD操作](https://www.cnblogs.com/Jack-Blog/p/13179382.html)實現了MyBatis基本配置與CRUD操作。但是每次都是手工建立SqlSessionFactory本篇將通過spring來管理bean,同時使用Druid連線池替換自帶的連線池。
## 什麼是Druid連線池
Druid是一個JDBC元件,它包括三部分:
* DruidDriver 代理Driver,能夠提供基於Filter-Chain模式的外掛體系。
* DruidDataSource 高效可管理的資料庫連線池。
* SQLParser
## Druid可以做什麼?
1. 可以監控資料庫訪問效能,Druid內建提供了一個功能強大的StatFilter外掛,能夠詳細統計SQL的執行效能,這對於線上分析資料庫訪問效能有幫助。
2. 替換DBCP和C3P0。Druid提供了一個高效、功能強大、可擴充套件性好的資料庫連線池。
3. 資料庫密碼加密。直接把資料庫密碼寫在配置檔案中,這是不好的行為,容易導致安全問題。DruidDruiver和DruidDataSource都支援PasswordCallback。
4. SQL執行日誌,Druid提供了不同的LogFilter,能夠支援Common-Logging、Log4j和JdkLog,你可以按需要選擇相應的LogFilter,監控你應用的資料庫訪問情況。
擴充套件JDBC,如果你要對JDBC層有程式設計的需求,可以通過Druid提供的Filter-Chain機制,很方便編寫JDBC層的擴充套件外掛。
## 匯入庫包
### 連線oracle
如果我們要連線oracle資料庫,需要匯入oralce的jdbc的包。但是由於oracle收費, 因此maven沒有oracle庫包,需要我們自己手工匯入外部包。或者也可以將oracle的jar匯入到maven庫中。具體匯入步驟可以檢視[Maven新增Oracle的依賴及驅動](https://blog.csdn.net/qq_21359547/article/details/79731665)
``` xml
```
### 連線mysql
由於mysql是免費的,我們可以通過maven直接安裝mysql的jdbc資料庫連線包
``` xml
```
### 匯入mybatis
``` xml
```
### 匯入druid
``` xml
```
### 匯入spring-jdbc包
``` xml
```
### 匯入spring包
``` xml
```
### 匯入spring事務相關包
``` xml
```
### 匯入mybatis-spring整合包
``` xml
```
## 配置
下面使用過mysql資料庫為例。
### 資料庫配置
在resources目錄下新建一個mysql.properities檔案,用於配置連線資料庫的相關配置。
```
druid.url=jdbc:mysql://localhost:3306/mysql?serverTimezone=UTC
#這個可以預設的,會根據url自動識別
druid.driverClassName=com.mysql.cj.jdbc.Driver
druid.username=root
druid.password=123456
##初始連線數,預設0
druid.initialSize=10
#最大連線數,預設8
druid.maxActive=30
#最小閒置數
druid.minIdle=10
#獲取連線的最大等待時間,單位毫秒
druid.maxWait=2000
#快取PreparedStatement,預設false
druid.poolPreparedStatements=true
#快取PreparedStatement的最大數量,預設-1(不快取)。大於0時會自動開啟快取PreparedStatement,所以可以省略上一句設定
druid.maxOpenPreparedStatements=20
```
### druid配置
在resources目錄下新建一個applicationContext-mysql.xml檔案,用於配置mysql的druid的資料庫連線池配置以及注入到spring的bean。
1. 資料來源的配置從mysql.propertie獲取的
``` xml