spring boot連接mysql數據庫


一、現在大部分持久化層ORM實現框架用的都是mybatis,spring Boot開始使用之后,mybatis官網也發布了mybatis-spring-boot-starter包來支持springboot集成開發,在jdbc連接數據庫的spring-boot-starter-jdbc包中,mybatis默認選擇了引入第三方數據庫連接池工具HiKariCp

這樣做應該是考慮到Hikari是目前公認的連接性能最強的連接池工具。

二、如果不單單考慮性能,按綜合能力考量 ,阿里的Druid其實是功能最強大的數據庫連接池工具。當然,阿里也為我們提供了支持springboot開發的starter包Druid-spring-boot-starter。

我個人比較偏向集成Druid做數據庫連接池工作,雖然需要單獨引入Druid的starter包,但是他的監控功能確實做的很好。

三、下面來具體分析下

1、首先分析下Hikari和Druid

參考博文 :https://blog.csdn.net/qq_17085463/article/details/90486515

總結來說,Hikari速度快,Druid功能強

2、具體使用:

參考博文:https://blog.csdn.net/weixin_38187317/article/details/81562571

github路徑:mybatis-spring-boot-starter    https://github.com/mybatis/spring-boot-starter

      Druid-spring-boot-starter       https://github.com/alibaba/druid/tree/master/druid-spring-boot-starter

       關於Druid的中文說明:https://github.com/alibaba/druid/wiki/%E5%B8%B8%E8%A7%81%E9%97%AE%E9%A2%98

如果使用mybatis的默認連接池Hikari,只需要引入pom依賴和配置application.properties文件如下:

#spring.datasource.driver-class-name:com.mysql.cj.jdbc.Driver
#mybaits掃描設置
mybatis.config-location=classpath:config/mybatis-config.xml
mybatis.mapper-locations=classpath*:dbmapper/*.xml
# 解析結果集對應的model路徑,當然,如果在mapper.xml中寫全限定名就不用配置這里
#  mybatis.type-aliases-package=com.example.mybatisdemo.db.model
# mybatis.configuration.mapped-statements=com.example.mybatisdemo.db.dao

#數據連接設置
spring.datasource.url:jdbc:mysql://192.*.100.29:3306/testdb?useUnicode=true&characterEncoding=utf-8
spring.datasource.username:root
spring.datasource.password:root
<properties>
        <java.version>1.8</java.version>
        <plugin.mybatis.generator>1.3.1</plugin.mybatis.generator>
</properties>
<dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>1.3.2</version>
        </dependency>

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </dependency>
</dependencies>
<build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
            <plugin>
                <groupId>org.mybatis.generator</groupId>
                <artifactId>mybatis-generator-maven-plugin</artifactId>
                <version>${plugin.mybatis.generator}</version>
                <configuration>
                    <configurationFile>src/main/resources/config/generatorConfig.xml</configurationFile>
                    <overwrite>true</overwrite>
                    <verbose>true</verbose>
                </configuration>
            </plugin>
        </plugins>
    </build>

如果使用mybatis外接連接池Druid,則需要配置如下:

#spring.datasource.driver-class-name:com.mysql.cj.jdbc.Driver
#mybaits掃描設置
mybatis.config-location=classpath:config/mybatis-config.xml
mybatis.mapper-locations=classpath*:dbmapper/*.xml


#數據連接設置
server.port=8080

spring.application.name=springboot-test-exam1

spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url:jdbc:mysql://192.*.*.29:3306/testdb?useUnicode=true&characterEncoding=utf-8
spring.datasource.username:root
spring.datasource.password:root
spring.datasource.druid.initial-size=5
spring.datasource.druid.min-idle=5
spring.datasource.druid.maxActive=20
spring.datasource.druid.maxWait=60000
spring.datasource.druid.timeBetweenEvictionRunsMillis=60000
spring.datasource.druid.minEvictableIdleTimeMillis=300000
spring.datasource.druid.validationQuery=SELECT 1 FROM DUAL
spring.datasource.druid.testWhileIdle=true
spring.datasource.druid.testOnBorrow=false
spring.datasource.druid.testOnReturn=false
spring.datasource.druid.poolPreparedStatements=true
spring.datasource.druid.maxPoolPreparedStatementPerConnectionSize=20
spring.datasource.druid.filters=stat,wall,slf4j
spring.datasource.druid.connectionProperties=druid.stat.mergeSql\=true;druid.stat.slowSqlMillis\=5000
spring.datasource.druid.web-stat-filter.enabled=true
spring.datasource.druid.web-stat-filter.url-pattern=/*
spring.datasource.druid.web-stat-filter.exclusions=*.js,*.gif,*.jpg,*.bmp,*.png,*.css,*.ico,/druid/*
spring.datasource.druid.stat-view-servlet.enabled=true
spring.datasource.druid.stat-view-servlet.url-pattern=/druid/*
spring.datasource.druid.stat-view-servlet.allow=127.0.0.1,192.168.163.1
spring.datasource.druid.stat-view-servlet.deny=192.168.1.73
spring.datasource.druid.stat-view-servlet.reset-enable=false
spring.datasource.druid.stat-view-servlet.login-username=admin
spring.datasource.druid.stat-view-servlet.login-password=123456
Druid配置
<properties>
        <java.version>1.8</java.version>
        <plugin.mybatis.generator>1.3.1</plugin.mybatis.generator>
</properties>
<dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>1.3.2</version>
        </dependency>

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </dependency>
 <!-- DruidDataSource -->

        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid-spring-boot-starter</artifactId>
            <version>1.1.10</version>
        </dependency>
</dependencies>
<build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
            <plugin>
                <groupId>org.mybatis.generator</groupId>
                <artifactId>mybatis-generator-maven-plugin</artifactId>
                <version>${plugin.mybatis.generator}</version>
                <configuration>
                    <configurationFile>src/main/resources/config/generatorConfig.xml</configurationFile>
                    <overwrite>true</overwrite>
                    <verbose>true</verbose>
                </configuration>
            </plugin>
        </plugins>
    </build>

Druid監控信息訪問路徑:http://localhost:8080/druid/

3、源碼底層分析

通過配置錯誤的數據庫連接信息會發現

1)、項目啟動過程中,Druid在初始化Datasource時會對數據庫進行測試連接而Hikari並沒有。

2)、兩者都是在解析完sql之后進行的數據庫連接,如果解析錯誤,則不進行數據庫連接。

我寫的一篇淺跟mybaits中使用的連接池就是Druid

下面在來簡單看看Hikari的源碼跟蹤:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM