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