mybatis插入問題總結

1.單元測試

我當時單測的時候,沒有在test類裏面去寫,是在calss類裏面寫了一個入口函數,直接調用的類的方法,如果功能代碼有用到spring的註解如圖

這樣的不能直接注入成功的,因爲spring根本沒有運行,直觀的錯誤提示就是一直在報錯空指針,因爲實例contratDAO就是null,如圖:

ps:這個問題我找了2天,剛開始以爲字段缺失沒有值的原因,網上各種找,最後問了RD發現這個原因,以後單測一定要用正常的單元測試。

代碼錯誤示範如圖:

2.單元測試的時候提示bean

遇到這種bean注入失敗的情況,8成就是class類沒有@Component註解,這樣就會提示bean失敗,加上即可。具體爲什麼要加我不知道啊........回頭我查查補上吧

3..插入失敗,提示表主鍵id沒有默認值

解決方案:

這個問題我找了好久,最後發現mysql表結構設計有問題,主鍵id不是自增的原因。勾選“Auto inc”自動遞增。

因爲是insert操作,所以DO實例插入的時候是沒有主鍵id的。

3.批量寫入

首先說下怎麼遇到這個問題,我剛開始插入多少條不斷for循環一天天插入(我之前用python的ORM寫庫的時候就是這麼弄得),如圖:

但是想法有點天真,最後報錯是數據庫字段id不能遞增(截圖沒存),後來網上找了一下,發現mybatis批量插入需要在mapping文件寫sql語句:

mapping循環寫入如圖:

mapping寫好之後,在DAO層把循環寫入的接口加上,如圖:

思路:DAO->mapping→mysql 自動批量插入。

路肯定不會這麼順利的,

坑1  mapping的命名空間寫錯:

用myabtis自動生成DAO腳本不會出現這個問題,名稱不是我想要的,我後面手動改了一下,造成這個坑,

報錯如圖:

解決方案:把namespace的名稱改成DAO/****  一致即可。

坑2 DO層變量名稱不一致,這個很簡單,根據報錯改對就行了:

參考文檔:https://www.cnblogs.com/admol/articles/4248159.html

坑3:報錯 mybatis配置時出現org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)

這個昨天排查了好久,一直找不到原因後來發現mapping文件下 ***Mapper寫錯了,應該是自動生成配置的generatorConfig.xml字段書寫有錯誤導致。

出現類似這種也有排查順序:

1:檢查xml文件所在的package名稱是否和interface對應的package名稱一一對應

2:檢查xml文件的namespace是否和xml文件的package名稱一一對應

3:檢查函數名稱能否對應上

4:去掉xml文件中的中文註釋

5:隨意在xml文件中加一個空格或者空行然後保存

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章