Druid連接池
連接池技術
連接池技術預先建立多個數據庫連接對象,然后將連接對象保存到連接池中。當客戶請求到來時,從池中取出一個連接對象為客戶服務,當請求完成后,客戶程序調用close()方法,將連接對象放回池中
HiKaricp:速度比較快;
TomCat-jdbc、c3p0、proxoll、bonecp
Druid:功能比較齊全;
開發步驟
首先在pom.xml引入所需要的依賴(mysql version按個人實際安裝的版本)
<!--mysql依賴--> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.15</version> </dependency> <!--mybatis依賴--> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>2.1.0</version> </dependency> <!-- 阿里系的Druid依賴包 --> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid-spring-boot-starter</artifactId> <version>1.1.10</version> </dependency>
注意:引入的依賴一定要正確
剛開始按網上的某些教程引入的druid依賴是這樣的
結果一直引入失敗,花了將近一個小時,實在不想吐糟.....
然后在application.properties(個人比較傾向)對MySQL,Mybatis進行設置
具體的就不多說了,這里需要注意的有:
如果MySQL是5.X版本的話----spring.datasource.druid.driver-class-name=com.mysql.jdbc.Driver
Mybatis的xml映射文件路徑SpringBoot默認是放在resources目錄下,如果想自定義文件路徑跟dao層在同一目錄下,需要在pom.xml中設置(大概原因是resources的路徑下資源springboot默認是不編譯的,需要自己配置,如果不配置,在啟動的時候就會提示找不到dao層里的方法)
<build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> <resources> <resource> <directory>src/main/java</directory> <includes> <include>**/*.xml</include> </includes> <filtering>true</filtering> </resource> </resources> </build>
---springboot默認的連接池是HiKaricp,配置Mysql連接的是spring.datasource.xxxxx,但這里使用的是阿里的Druid連接池,
所以一定要配置正確----spring.datasource.druid.xxxxx,否則運行就會出錯....
Druid的配置還是蠻多的,這里附上本人application.properties的druid配置

#連接池指定 springboot2.0版本默認使用HicariCp 此處替換成Druid
#為下面的連接池的補充設置,應用到上面所有數據源中
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
# 初始化大小,最小,最大
spring.datasource.druid.initial-size=1
spring.datasource.druid.min-idle=3
spring.datasource.druid.max-active=20
spring.datasource.druid.async-init=false
#配置獲取等待連接超時的時間
spring.datasource.druid.max-wait=60000
# 配置間隔多久才進行一次檢測,檢測需要關閉的空閑連接,單位是毫秒
spring.datasource.druid.timeBetweenEvictionRunsMillis=60000
# 配置一個連接在池中最小生存的時間,單位是毫秒
spring.datasource.druid.minEvictableIdleTimeMillis=300000
spring.datasource.druid.validationQuery=SELECT 'x'
spring.datasource.druid.testWhileIdle=true
spring.datasource.druid.testOnBorrow=false
spring.datasource.druid.testOnReturn=false
# 是否緩存preparedStatement,打開PSCache,並且指定每個連接上PSCache的大小,官方建議MySQL下關閉,如果用於SQL防火牆,建議打開
spring.datasource.druid.poolPreparedStatements=true
spring.datasource.druid.maxPoolPreparedStatementPerConnectionSize=20
# 通過connectProperties屬性來打開mergeSql功能;慢SQL記錄
#spring.datasource.druid.filters=stat,wall,log4j
# 配置監控統計攔截的filters,去掉后監控界面sql無法統計,'wall'用於防火牆
spring.datasource.druid.connectionProperties=druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000
啟用單元測試
結果(與application.properties設的值對應上)
(很多細節一定要注意,看似不起眼,一旦出錯,半天也找不到原因!反正采坑一時爽,一直才坑一直爽...)
這樣SpringBoot+MySQL+Mybatis+Druid最基本的整合就完成了,更深入的設置有待研究.....