一、前言
之前已經有一篇文章討論過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
[3] Xanthuim, MySQLNonTransientConnectionException: Could not create connection to database server., https://blog.csdn.net/qq_15003505/article/details/80463174