激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - 詳解Mybatis逆向工程中使用Mysql8.0版本驅動遇到的問題

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

2021-06-03 11:36Dmego的博客 Java教程

今天在使用 8.0.12 版的 mysql 驅動時遇到了各種各樣的坑。這篇文章主要介紹了詳解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:

?
1
2
3
4
<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,成功啟動,沒有任何問題,測試其他業務功能,也沒有任何問題。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。

原文鏈接:https://dmego.me/2018/10/10/mysql8-mybatis-geneator.html

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 欧美性受ⅹ╳╳╳黑人a性爽 | 综合激情网 | 九九热视频在线 | 成人激情视频网站 | a视频在线播放 | av在线一区二区三区四区 | 羞羞视频一区二区 | 特级黄一级播放 | 久久精品国产清自在天天线 | 欧美精品亚洲人成在线观看 | 久久精品国产亚洲一区二区 | 91成 | 毛片视频播放 | 天天躁狠狠躁夜躁2020挡不住 | 国产流白浆高潮在线观看 | 久色成人网 | 日韩中文字幕三区 | 欧美一级特黄aaaaaaa什 | 久久我不卡 | 久久国语对白 | 成人羞羞网站入口 | 久草成人在线观看 | 99热1| 爱唯侦察 国产合集 亚洲 | 久久精品视频2 | a黄色网| 福利国产在线 | 国产精品99久久久久久久 | 亚洲一区二区三区视频免费 | 日本中文字幕电影在线观看 | 国产免费传媒av片在线 | 久久久久久久爱 | xxx日本视频 | 欧美视频在线一区二区三区 | 中文字幕伦乱 | 成人在线视频在线观看 | 欧美一区二区三区成人精品 | 国产午夜精品久久久 | www视频免费在线观看 | 97se亚洲综合在线韩国专区福利 | 在线播放免费人成毛片乱码 |