中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何解決Mybatis逆向工程中使用Mysql8.0版本驅動遇到的問題

發布時間:2021-07-21 13:54:15 來源:億速云 閱讀:295 作者:小新 欄目:編程語言

這篇文章主要介紹如何解決Mybatis逆向工程中使用Mysql8.0版本驅動遇到的問題,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!

在使用 8.0.12 版的 mysql 驅動時遇到了各種各樣的坑,在使用 JDBC 連接上遇到的問題可以參考我的上一篇博客。我在使用 mybatis 逆向工程生成各種 mapper , pojo , dao 時,遇到了一個困惑我好幾個小時的錯誤,這個錯誤是

Result Maps collection already contains value for BaseResultMap

產生這個錯誤可能有各種原因。但是這里我只說我的原因及解決過程。

初步探索

我在網上查閱了大量的博客文章,對于產生這類錯誤的原因最多的是:生成了多次 mapper , dao 以及 pojo 文件。也就是多次運行了生成這些文件的方法。造成 XXXmapper.xml 中出現了重復的 resultmap 。但是我這里把這些文件刪除后,再重新生成還是會報這個錯。所以肯定不是多次生成的問題。

于是我打開了出現問題的那個 Mapper.xml 文件,搜索 BaseResultMap 發現其作為 resultMap 的 id 居然出現了三次,還有很多其他的 sql 標簽的 id 也有很多重復的。我將這些重復的都刪除,再次運行,成功了,沒有出現錯誤。而且利用這些生成的 mapper 做后面的功能也沒有任何問題。這就非常奇怪,為什么會多生成這些代碼呢,我繼續在網上找相關的文章。

深入探索

好不容易找到一篇博客中提到 :升級到 mysql 8.0 驅動后的使用 mybatis 逆向工程生成的文件或不一樣,具體的怎么不一樣也沒有說。看到這里,我猜會不會是驅動版本造成的,于是我將 pom.xml 里的 mysql 驅動版本調整到了 5.1.10。刪干凈文件,再次生成后,發現之前出錯的那個 mapper.xml 里的 以 BaseResultMap 作為 id 的 resultMap 只有一個了,其他的 resultMap 中 id 也是唯一的。為了檢驗這次生成的到底有沒有用。我啟動 Tomact 運行程序。發現正常啟動,后續的功能也沒有問題。

最終解決

但是如果使用 5.0 版本的驅動連接 mysql 8.0 在項目中可能會遇到難以預料的問題,所以我并沒有就此將驅動版本改變。我繼續在網上通過換各種關鍵詞來搜尋解決方案。幾個小時過去了,還是沒有任何結果。最后被迫去看了 [MyBatis Generator] 的官方英文文檔。中文文檔已經看過了,沒有找到相關的內容。在閱讀英文文檔中,我在Database Specific Information (使用注意事項)下面的 mysql使用注意事項 中似乎找到了相關的內容。其原內容如下:

If you are using version 8.x of Connector/J you may notice that the generator attempts to generate code for tables in the MySql information schemas (sys, information_schema, performance_schema, etc.) This is probably not what you want! To disable this behavior, add the property “nullCatalogMeansCurrent=true” to your JDBC URL.

For example:

  <jdbcConnection driverClass="com.mysql.jdbc.Driver" connectionURL="jdbc:mysql://localhost/my_schema"
      userId="my_user" password="my_password">
    <property name="nullCatalogMeansCurrent" value=true" />
  </jdbcConnection>

上面的英文文檔翻譯過來就是:

如果您使用的是Connector / J的8.x版,您可能會注意到生成器嘗試為MySql信息模式(sys,information_schema,performance_schema等)中的表生成代碼。這可能不是您想要的! 要禁用此行為,請將屬性“nullCatalogMeansCurrent = true”添加到JDBC

的確,我發現使用 8.0 版的驅動比使用 5.0 版時不僅 mapper.xml 文件中多生成了好多代碼,而且還多生成了一個 xxxWithBLOBs 的 pojo 文件。雖然還是不太理解上面說的問題,但是我還是添加 nullCatalogMeansCurrent 屬性。然后重新生成了相關的 mapper , pojo , dao 。打開之前出現問題的 mapper.xml 文件,和使用 5.0 版的驅動生成的代碼一樣,以 BaseResultMap 作為 id 的 resultMap 只有一個了。再次啟動 Tomact,成功啟動,沒有任何問題,測試其他業務功能,也沒有任何問題。

以上是“如何解決Mybatis逆向工程中使用Mysql8.0版本驅動遇到的問題”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

勃利县| 潜江市| 镇原县| 会昌县| 郧西县| 顺平县| 达日县| 南投县| 长顺县| 平乐县| 封丘县| 金秀| 中方县| 中阳县| 郯城县| 综艺| 龙泉市| 宣威市| 饶阳县| 宁化县| 洪江市| 邵东县| 绥德县| 彭山县| 马关县| 上思县| 会同县| 宿松县| 颍上县| 盘锦市| 长白| 芒康县| 博湖县| 赤水市| 镇平县| 江都市| 大兴区| 边坝县| 怀远县| 达日县| 绥滨县|