SpringBoot整合MyBatis與MySql8.0


一、前言

之前已經有一篇文章討論過SpringBoot整合MyBatis,因而此篇不在重復累贅,本文主要是最新版的SpringBoot2.0與MyBatis、最新MySQL8.0整合過程中遇到的問題進行總結。同時,SpringBoot整合MyBatis中可以不用之前那篇那樣繁瑣的配置,可以使用application.properties文件進行整合。

 

二、application.yml 與 application.properties 加載順序

SpringBoot優先加載yml文件,也就是先加載yml文件再加載properties文件。兩個文件都可以起到同時配置全局的作用。如果在yml文件中配置了端口為80,在properties文件中配置了8080,那么最后端口是8080,因而properties后加載,覆蓋了之前已經配置后的80端口。

其實 application.yml 文件會被優先加載,

而如果同時存在 application.properties 文件,並且存在相同的配置,

那么則會用 application.properties 文件中的配置覆蓋之前的配置;

也就是說哪個文件被最后加載,哪個才具有最高級別,

因為最后的,會覆蓋前面所有的。
--------------------- 
作者:微wx笑 
來源:CSDN 
原文:https://blog.csdn.net/testcs_dn/article/details/79010798 
版權聲明:本文為博主原創文章,轉載請附上博文鏈接!

 

三、application.properties示例

#設置Tomcat端口,默認8080
server.port=8080
#設置項目ContextPath
server.context-path=/
#設置Tomcat編碼
server.tomcat.uri-encoding=UTF-8
#設置視圖解析器路徑
spring.mvc.view.prefix=/WEB-INF/views/
#設置視圖解析器后綴
spring.mvc.view.suffix=.jsp
 
#數據庫配置
spring.datasource.url=jdbc:mysql://localhost:3306/tuzisong?useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&allowMultiQueries=true
spring.datasource.username=root
spring.datasource.password=F6m3G3j6
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
 
#配置.xml文件路徑
mybatis.mapper-locations=classpath:mapper/*.xml
#配置模型路徑
mybatis.type-aliases-package=cn.copy.model

MyBatis通過上述兩行,便可在Resource的mapper中讀取xml文件和對應的實體類,如果數據庫使用的MySQL8.0,加載類需要更改,下文有論述。

如果想了解整體的配置,文件目錄結構,詳細可以參考該示例的原文:[1]

 

四、使用MySQL8.0

使用MySQL8.0的時候會出現兼容性的問題。

1、數據庫連接工具無法連接[2]

mysql8.0默認采用caching_sha2_password的加密方式

第三方客戶端基本都不支持這種加密方式,只有自帶的命令行支持

所以需要修改加密方式。在MySQL自帶的客戶端client中輸入如下命令:

ALTER USER 'username'@'ip_address' IDENTIFIED WITH mysql_native_password BY 'password';

示例:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'root';

2、SpringBoot通過jdbc無法連接到MySQL

先更換最新的jar包(當前最新為2018-09-27,8.0.13),在maven中添加如下依賴:

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.13</version>
</dependency>

同時,application.xml中配置文件中應該改為:

url: jdbc:mysql://localhost:3306/db_test?characterEncoding=utf8&useSSL=false&serverTimezone=UTC&rewriteBatchedStatements=true
 
driver: com.mysql.cj.jdbc.Driver

詳細內容可以參考文章[3]

 

五、后言

本文需要對SpringBoot與MyBatis有一定的了解,時代在向前,版本在更新,在重新整合的過程中遇到的各種問題,集合各方的觀點與解決方案,總結形成此文。

 

Reference:

[1] 阿豆根, Spring Boot+Mybatis+MySql 完整整合教程, https://blog.csdn.net/qq_33768099/article/details/79787215

[2] https://stackoverflow.com/questions/49194719/authentication-plugin-caching-sha2-password-cannot-be-loaded

[3] Xanthuim, MySQLNonTransientConnectionException: Could not create connection to database server., https://blog.csdn.net/qq_15003505/article/details/80463174


免責聲明!

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



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