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);
}

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

你可能感兴趣的:(SpringData)