1. 程式人生 > >SpringBoot整合MyBatis與MySql8.0

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.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: