原文地址:https://www.miaoroom.com/code/note/mybatis-debug-notes.html
出處:喵容
本文會零零碎碎的更新自己在學習 Java持久層
碰到的問題和解決辦法,希望這些踩坑的歷程能給需要的你帶來幫助。
由於文章主要為 Spring Data JPA
和 Mybatis
的內容。
private Integer categoryId;
這個錯誤看上去是這張表沒有主鍵,在使用hibernate的映射表的時候entity類是必須要主鍵的,否則就會報出這個異常。所以解決如下,添加自增的ID主鍵:
@Id
@GeneratedValue
private Integer categoryId;
如果我們已經配置了@ID,還會報這個錯誤是因為import錯包了,錯誤的使用了org.springframework.data.annotation.Id包。
當我們使用@Entity的時候,提示我們Entity過時,被划了橫線,是因錯誤的引用了org.hibernate.annotations.Entity包,這裡應該使用JPA的註解javax.persistence.Entity,而不是hibernate的。
在實體中,將ID生成略組改成@GeneratedValue(strategy = GenerationType.IDENTITY)。
如以下:
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer categoryId;
在方法前加上 code>@Transactional 註解,會讓你當前的事務操作在執行完成後完全回滾。若執行完未報錯,則意為測試通過。可搭配Aseert
斷言使用,這樣便省去了我們測試完還要刪除測試數據的多餘操作。
PageRequest類使用的時候利用new一個對象的時候報錯,所這個方法過時了,解決方法
PageRequest pageRequest=new PageRequest(int ,int );//提示方法過時
應該使用
PageRequest request = PageRequest.of(0,1);
在使用tk.mybatis建立實體的時候我們使mapper繼承myMapper不需要我們對mapper.xml文件中寫很多重複的代碼了,如果因為表中沒有實體中對應的字段而出現錯誤Caused by: java.lang.IllegalStateException: No typehandler found for property xxx,這種情況下就需要你去排查字段。
1、傳入一個參數時
id為mapper接口中的方法名,resultMap為返回類型,parameterType為輸入參數的類型
對應的xml配置:
2、傳入多個參數時
mapper接口配置:
對應的xml配置:
由於是多參數那麼就不能使用parameterType, 這裡用@Param來指定哪一個
View Comments
一一一一