問題
在Mybaits中傳入參數為LocalDateTime,查詢發現結果集為空,插入時發現時間相差13小時
測試
- 新建工程,新建測試庫(主要此處新工程使用的JDBC為mysql-connector-java版本為8.0.19)
- 發現需要設置MyBatis版本為3.4.5以上,在3.4.5之前不支持LocalDateTime會報錯
- 確認Mybatis版本高於3.4.5以后發現結果集還是不對
- 查詢后發現因為Mysql時區問題,mysql-connector-java為8.0以上時會使用數據庫設置的時區,而不是Java應用的時區,解決方法為設置JDBC鏈接添加&serverTimezone=Asia/Shanghai
- 測試工程結果集正確,相差13小時問題解決
其他問題
- 回到原有項目,確認Mybaits版本高於3.4.5
- JDBC鏈接添加&serverTimezone=Asia/Shanghai
- 執行后結果集不正確,插入時間錯誤
- 繼續查閱資料發現mysql-connector-java數據庫驅動的版本不能低於4.2,現有項目使用mysql-connector-java版本為5.1.34,數據庫驅動為4.0,升級5.1.49問題解決
- 上一步中數據庫驅動版本查看是在META-INF/MANIFEST.MF文件中
- 問題解決
總結
- 首先確認MyBatis版本為3.4.5以上,如果低於此版本可以手動添加類型轉換和依賴
- 確認JDBC鏈接有時區設置,如果沒有可以添加或者設置MySql默認時區
- 確認mysql-connector-java中MySql驅動高於4.2,可以通過升級版本解決