血的教訓 之 db.properties配置文件


  sb的我竟然能因為亂碼問題折騰一天,原因也是讓我意想不到:錯誤出現現在mysql數據庫的url地址配置上😭。

其實在配置mysql的url的時候由於我記得不是特別牢,還特意在網上搜了url配置,並復制使用了某位博主的代碼。
jdbc:mysql:///mybatis?useSSL=false&useUnicode=true&charsetEncoding=utf-8
就是它,我亂碼的罪魁禍首😭。
細心的你就會發現錯誤了,characterEncoding才是正解。

  額,沒什么可說的,就是希望那位博主別再誤人子弟了😒。

一、解決流程

  1. 先檢查了自己是否配置了request.setCharacterEncoding("utf-8");
  2. 沒問題后,確認是否是post請求的方式,后面還特地用函數檢查String method = request.getMethod();
  3. 觀察是在什么階段發生亂碼的。經過數據打印,發現在sqlSession.commit();前都不會亂碼 🤔
  4. 在解決無果后,開始檢查所有文件的編碼格式,IDEA的setting中的File Encodings全部配置為utf-8,使用手動配置的Tomcat8.5,清除緩存等等無腦操作,還是無果
  5. 晚上回來,靜下心來,分析可以發現在commit前沒有問題,但到數據庫的數據始終是亂碼的,錯誤可能發現在mysql數據庫上✨
  6. 先是檢查數據庫、表創建是的編碼——是utf-8。然后是,db.properties配置文件,乍一看沒什么問題。於是又在網上查看mysql數據庫參數配置,一行一行的對比發現了錯誤。哎!!

二、代碼 —— 牢記

  在此做一下記錄:

#Connect/J version 5.X
driver=com.mysql.jdbc.Driver
url=jdbc:mysql:///mybatis?useSSL=false&useServerPrepStmts=true&useUnicode=true&characterEncoding=utf-8
username=root
password=root
#Connect/J version 6.X以后的版本,適合於MySQL8.x新版本
driver=com.mysql.cj.jdbc.Driver
url=jdbc:mysql:///mybatis?serverTimezone=UTC&useSSL=false&useServerPrepStmts=true&useUnicode=true&characterEncoding=utf-8
username=root
password=root

三、注意事項

  mysql的url相關配置可以根據自己的實際應用場景添加其他參數配置。

1、mybatis中

  注意在mybatis-config.xml中要將<properties resource="db.properties"/>放在<configuration></configuration>內的最前面。
image

四、經驗教訓

  網絡的水很深,我有點把握不住。自己經過測試的代碼,才是自己的😢。


免責聲明!

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



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