Druid鏈接池
鏈接池技術
鏈接池技術預先創建多個數據庫鏈接對象,而後將鏈接對象保存到鏈接池中。當客戶請求到來時,從池中取出一個鏈接對象爲客戶服務,當請求完成後,客戶程序調用close()方法,將鏈接對象放回池中java
HiKaricp:速度比較快;
TomCat-jdbc、c3p0、proxoll、bonecpmysql
Druid:功能比較齊全;spring
開發步驟sql
首先在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依賴是這樣的springboot
結果一直引入失敗,花了將近一個小時,實在不想吐糟.....mybatis
而後在application.properties(我的比較傾向)對MySQL,Mybatis進行設置app
具體的就很少說了,這裏須要注意的有:async
若是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最基本的整合就完成了,更深刻的設置有待研究.....