初學mybatis框架配置MySQL資料庫筆記

来源:https://www.cnblogs.com/moegarn/archive/2020/05/08/12852733.html
-Advertisement-
Play Games

因為本學期開了一門《Java程式設計框架》課程,主要講述java有關程式框架,其中講到了mybatis框架. mybatis框架簡單來說就是將JDBC技術集成化的一種框架,其好處在於不需要重覆編寫JDBC操作資料庫的代碼,一定程度上方便了程式員操作資料庫,但是需要程式員對於SQL語句相當熟悉才行。 ...


  因為本學期開了一門《Java程式設計框架》課程,主要講述java有關程式框架,其中講到了mybatis框架.

  mybatis框架簡單來說就是將JDBC技術集成化的一種框架,其好處在於不需要重覆編寫JDBC操作資料庫的代碼,一定程度上方便了程式員操作資料庫,但是需要程式員對於SQL語句相當熟悉才行。

  有關mybatis框架的具體內容目前還在學習,所以會在之後逐步將內容更新完善,下麵先總結一下在配置mybatis框架時遇到的問題、錯誤及相應解決方法。

  因為授課老師使用的教學環境是:

    1.Myecplise(具體版本未知,不再本次內容範圍內)

    2.mySQL5.7.17(雖然資料庫版本比較老了,不過相容性問題基本沒有)

    3.navicat for mysql 11.2.7 (資料庫圖形化操作工具,較mysql自帶的編輯器來說更容易建庫建表操作數據,便於之後練習)

  

  之後,再來看看我的配置環境:

    1.Ecplise EE 4.6.3(之前學習JSP使用的java環境,裝有Tomcat)

    2.mySQL8.0(最新版本)

    3.navicat for mysql 15(最新版本)

  學習軟體的伙伴們大概都知道使用工具最好不建議使用最新版,特別是需要幾個工具搭配使用時,例如本次使用java連接sql的操作。但因為本人不想再重新配置mysql資料庫,所以呢,就決定解決一個接一個的問題吧。(其實個人感覺出現的問題不算很多……)

 

  問題①  出現提示sql版本不匹配

  Error querying database.  Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Client does not support authentication protocol requested by server; consider upgrading MySQL client

 

  百度翻譯後是這樣的:

  

 

  

  經過排查發現,我安裝的mysql資料庫版本是8.0,但是在我的java工具中配有的mysql連接驅動板版本是

 

 

   

    mysql官方連接驅動下載地址:https://dev.mysql.com/downloads/connector/j/5.1.html

 

 

 

 

 

 

     下載完驅動包之後,只把mysql-connector-java-8.0.20.jar解壓出來並放到java工程的WEB-INF/lib目錄下,然後通過Build Path->Configure Build Path 將驅動包配置到 Reference Libraries目錄下,自此配置的問題算是暫時解決了。但是,還是沒有辦法運行,因為又報錯了……

 

   問題②:連接資料庫不相容密碼認證協議

 

  ER_NOT_SUPPORTED_AUTH_MODE……

   錯誤意思表示客戶端不支持認證協議,通過百度,找到瞭解決方法,還是不相容的問題,因為mysql最新版中更改了預設的密碼認證協議。

 

 

 

    放出參考連接:https://yq.aliyun.com/articles/705235

      修改mysql密碼協議配置之後,再次嘗試運行測試程式,又報錯了。

    

    問題③:提示不識別編碼格式

   Error querying database.  Cause: java.sql.SQLException: Unknown initial character set index '255' received from server. Initial client character set can be forced via the 'characterEncoding' property.

   

     百度翻譯如下:

   

 

 

 

   查詢了百度,發現瞭解決方法,就是在mybatis框架的xml配置文件中的url路徑加入?useUnicode=true&characterEncoding=utf8

 

 

    這段代碼同樣是從網上尋找的,網上可能還有其他的編碼內容,這裡以解決問題為主,暫不做過多研究。本以為問題馬上解決了,誰知新的問題又出現了……

 

    問題④:SQL伺服器時區識別錯誤

   Error querying database.  Cause: java.sql.SQLException: The server time zone value '?й???????' is unrecognized or represents more than one time zone. You must configure either the server or JDBC driver (via the 'serverTimezone' configuration property) to use a more specifc time zone value if you want to utilize time zone support.

 

     百度翻譯如下:

 

 

 

 

    

 

 

     依然上網百度資料,發現有很多說法是在mybatis框架下的xml配置文件中的url後面加入時區配置代碼,但是經過嘗試,發現問題沒有解決,但是意外發現了一個解決方法,雖然目前還不清楚此方法是如何解決問題的,不過還是以解決問題為主進行,之後在慢慢研究。

    此問題的解決方法是:

 

 

 

 

 

 

    這裡說明一下,這個mysql-connector-java-5.1.10-bin.jar驅動包是授課老師為了教學方便發佈到群里的,在文章開頭提到過。在解決mysql連接驅動不匹配的問題中,加入了8.0的jar包並Build Path之後,我覺得沒有必要刪除這個5.1的jar包,而僅僅刪除了5.1的Build Path,也就是說配置環境目錄中只有最新版的8.0連接驅動環境,如下圖所示:

 

 

     問題⑤:使用ecplise連接MySQL可能出現線程異常問題

      Exception in thread "main" java.lang.NullPointerException

    通過百度,找到瞭解決方法,就是在構建InputStream輸入流對象時,需要讀取xml配置文件,需要在xml配置文件前加上一個”\“,如下圖所示:

 

 

 

    以上這張截圖是實現了Dao介面的getById方法,其中添加了許多顯示語句,主要用於診斷問題源。

    目前,發現在Ecplise編程環境下創建輸入流讀取配置文件時需要在配置文件名前加上”\“,但是在Myecplise編程環境下可以不用加上”\“,不清楚問題在哪裡,這裡註意下即可。

    參考資料:https://blog.csdn.net/qq_41808387/article/details/100636977

 

    好的,至此,程式成功運行!

 

 

 

 

 

 

    拓展:在運行結果中發現出現了Warning,雖然不影響運行結果,但是作為初學者來說,還是要瞭解一下是什麼意思。

      百度翻譯如下:

 

    

 

 

    後記:拓展這部分內容,上課時講到過,但是因為某些原因錯過了,在學習瞭解之後會更新出這部分內容說明及應對措施。

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...