MyBatis使用LocalDateTime遇到的一系列問題


問題

在Mybaits中傳入參數為LocalDateTime,查詢發現結果集為空,插入時發現時間相差13小時

測試

  1. 新建工程,新建測試庫(主要此處新工程使用的JDBC為mysql-connector-java版本為8.0.19)
  2. 發現需要設置MyBatis版本為3.4.5以上,在3.4.5之前不支持LocalDateTime會報錯
  3. 確認Mybatis版本高於3.4.5以后發現結果集還是不對
  4. 查詢后發現因為Mysql時區問題,mysql-connector-java為8.0以上時會使用數據庫設置的時區,而不是Java應用的時區,解決方法為設置JDBC鏈接添加&serverTimezone=Asia/Shanghai
  5. 測試工程結果集正確,相差13小時問題解決

其他問題

  1. 回到原有項目,確認Mybaits版本高於3.4.5
  2. JDBC鏈接添加&serverTimezone=Asia/Shanghai
  3. 執行后結果集不正確,插入時間錯誤
  4. 繼續查閱資料發現mysql-connector-java數據庫驅動的版本不能低於4.2,現有項目使用mysql-connector-java版本為5.1.34,數據庫驅動為4.0,升級5.1.49問題解決
  5. 上一步中數據庫驅動版本查看是在META-INF/MANIFEST.MF文件中
  6. 問題解決

總結

  1. 首先確認MyBatis版本為3.4.5以上,如果低於此版本可以手動添加類型轉換和依賴
  2. 確認JDBC鏈接有時區設置,如果沒有可以添加或者設置MySql默認時區
  3. 確認mysql-connector-java中MySql驅動高於4.2,可以通過升級版本解決


免責聲明!

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



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