欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

詳解Mybatis逆向工程中使用Mysql8.0版本驅(qū)動遇到的問題

 更新時間:2018年10月10日 13:53:20   作者:Dmego的博客  
今天在使用 8.0.12 版的 mysql 驅(qū)動時遇到了各種各樣的坑。這篇文章主要介紹了詳解Mybatis逆向工程中使用Mysql8.0版本驅(qū)動遇到的問題,感興趣的小伙伴們可以參考一下

前言

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

Result Maps collection already contains value for BaseResultMap

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

初步探索

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

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

深入探索

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

最終解決

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

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

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

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • mybatis的dtd約束文件及配置文件xml自動提示操作

    mybatis的dtd約束文件及配置文件xml自動提示操作

    這篇文章主要介紹了mybatis的dtd約束文件及配置文件xml自動提示操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-12-12
  • Springboot項目快速實現(xiàn)攔截器功能

    Springboot項目快速實現(xiàn)攔截器功能

    上一篇文章介紹了Springboot項目如何快速實現(xiàn)過濾器功能,本篇文章接著來盤一盤攔截器,仔細研究后會發(fā)現(xiàn),其實攔截器和過濾器的功能非常類似,可以理解為面向切面編程的一種具體實現(xiàn)。感興趣的小伙伴可以參考閱讀
    2023-03-03
  • Java多線程CyclicBarrier的實現(xiàn)代碼

    Java多線程CyclicBarrier的實現(xiàn)代碼

    CyclicBarrier可以使一定數(shù)量的線程反復地在柵欄位置處匯集,本文通過實例代碼介紹下Java多線程CyclicBarrier的相關(guān)知識,感興趣的朋友一起看看吧
    2022-02-02
  • java JTree JCheckBox樹復選框詳解

    java JTree JCheckBox樹復選框詳解

    這篇文章主要為大家詳細介紹了java JTree JCheckBox樹復選框的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-11-11
  • 詳解使用Spring Boot開發(fā)Web項目

    詳解使用Spring Boot開發(fā)Web項目

    這篇文章主要介紹了詳解使用Spring Boot開發(fā)Web項目,具有一定的參考價值,感興趣的小伙伴們可以參考一下。
    2017-04-04
  • Springboot獲取jar包中resources資源目錄下的文件

    Springboot獲取jar包中resources資源目錄下的文件

    今天在項目中遇到一個業(yè)務(wù)場景,需要用到resources資源目錄下的文件,本文主要介紹了Springboot獲取jar包中resources資源目錄下的文件,感興趣的可以了解一下
    2023-12-12
  • Java排序算法之桶排序算法解析

    Java排序算法之桶排序算法解析

    這篇文章主要介紹了Java排序算法之桶排序算法解析,桶排序 (Bucket sort)或所謂的箱排序,是一個排序算法,工作原理是將數(shù)組分到有限數(shù)量的桶子里,每個桶子再個別排序,有可能再使用別的排序算法或是以遞歸方式繼續(xù)使用桶排序進行排序,需要的朋友可以參考下
    2023-10-10
  • SpringBoot中間件封裝限流器的方案詳解

    SpringBoot中間件封裝限流器的方案詳解

    這篇文章主要介紹了SpringBoot中間件封裝限流器,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-07-07
  • MyBatis-Plus實現(xiàn)對查詢結(jié)果進行分頁的基本步驟

    MyBatis-Plus實現(xiàn)對查詢結(jié)果進行分頁的基本步驟

    MyBatis-Plus 是一個 MyBatis 的增強工具,在 MyBatis 的基礎(chǔ)上只做增強不做改變,為簡化開發(fā)、提高效率而生,MyBatis-Plus 支持多種數(shù)據(jù)庫的分頁查詢,其分頁功能是通過 Page 類實現(xiàn)的,本文介紹了使用 MyBatis-Plus 實現(xiàn)分頁查詢的基本步驟,需要的朋友可以參考下
    2024-08-08
  • Java關(guān)于JDK1.8新特性的Stream流

    Java關(guān)于JDK1.8新特性的Stream流

    這篇文章主要介紹了版本薇JDK1.8 的Java中的Stream流,Stream流是一個來自數(shù)據(jù)源的元素隊列并支持聚合操作,感興趣的朋友可以參考下面文章內(nèi)容
    2021-09-09

最新評論