spring boot+tkmybatis(mapper)工具實現通用資料操作介面時遇到的問題

來源:互聯網
上載者:User

標籤:primary   ...   gpo   遇到的問題   res   col   resource   mon   color   

最近在做一個sb+tkmybatis整合的可以提供通用資料操作介面的demo,然而出現了很詭異的事情.,使用mapper提供的selectByPrimaryKey介面返回結果時報異常: 


java.lang.ClassCastException: com.yhq.ssmdemo.web.mysql.pojo.Tree cannot be cast to com.yhq.ssmdemo.web.mysql.pojo.Trees

 

...什麼鬼?自己轉換自己?還報異常?搞了一整天都不知道怎麼回事,去看mybatis源碼,mapper源碼,都沒發現會造成這種問題的代碼..然後在另外一個不用springboot的demo裡面試了卻不會出現這種問題。然後我又開始研究是不是spring boot自動設定時少了某些東西,但也沒發現,而且也不會是這種問題吧...然後後面上網搜了下(之前也搜過,但可能關鍵字不準確導致搜出來的沒有想要的結果),然後發現了一個同樣的問題,說這是工具造成的一個bug,但我還以為是mapper工具,看了他給出的解決方案然後才知道是spring devtools這個工具。由於是本地開發的,所以用了spring devtools工具來進行監測代碼修改自動重啟,我們知道這個工具的原理就是使用兩個類載入器,一個載入不會改變的第三方的依賴jar;另一個載入自己項目中自己編寫的類。所以會出現這個異常就是由於這個問題導致的,下面,這樣可以更加清晰直觀地看出來,

這個是在項目啟動spring devtools模組時進行堆dump的圖,可以看到我自己寫的許多類都有兩個:

這個是項目不啟用spring devtools模組的堆dump圖,自己寫的類只有一個:

所以這完全就是spring devtools的使用導致的,那怎麼解決呢?讓同一個類載入器去載入mapper的jar和自己寫的實體類就行了:

在項目的src/main/resources目錄下建立一個目錄:META-INF,然後建立一個spring-devtools.properties檔案,內容為:restart.include.companycommonlibs=tk/mybatis.*即可。

 

 

spring boot+tkmybatis(mapper)工具實現通用資料操作介面時遇到的問題

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.