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);
}
其他的代码可以在上一个篇文章中找到,点击这里查看,这里不做重复,减少页面的代码量,方便来访的学者快速阅读和参考。