天天看點

SpringDataJPA的JPQL語句簡單使用

SpringDataJPA的JPQL語句簡單使用

此文章基于上一篇SpringDataJPA的簡單使用,點選這裡檢視SpringDataJPA的簡單使用,如果已經學會SpringDataJPA的環境配置,可以直接往下閱讀。

SpringDataJPA的智能化讓程式設計更便捷高效,但是智能并非全能,比如偶爾會出錯,像屬性名username可能會被識别為user,另外有特殊的增删改成需求的時候也不能滿足開發的需求,這個時候就需要手動的添加JPQL語句,實作自由程式設計。

以下貼上dao層接口的代碼

public interface IBooksDao extends Repository<Book, Integer>{
	//可以省略select Book
	@Query("select b from Book b where b.name=?")
	Book queryByName(String bookName);
	
	//book_id可以不用寫成b.book_id,直接采用類中的屬性,但不是取字段名
	@Query("from Book b where book_id=(select max(book_id) from Book)")
	Book queryMaxIdBook();
	
	//采用原生态的SQL語句
	@Query(value="select * from books where book_name=?",nativeQuery=true)
	Book queryByName2(String bookName);
	
	//修改操作必須添加modifying,另外?後的序列是參數的序列
	//修改需要事務,這裡在配置檔案中已經處理
	@Modifying
	@Query("update Book b set b.storage=?2 where b.name=?1")
	void updateStorageByName(String name,int storage);
	
	//采用參數占位
	@Modifying
	@Query("update Book b set b.storage=:storage where b.name=:name")
	void updateStorageByName2(@Param("name") String name,@Param("storage") int storage);
	
	@Modifying
	@Query("delete from Book where name=?")
	void delByName(String name);
}
           

其他的代碼可以在上一個篇文章中找到,點選這裡檢視,這裡不做重複,減少頁面的代碼量,友善來訪的學者快速閱讀和參考。