|
本文参考《精通Spring:JavaWeb开发技术详解》,作者:孙卫琴,清华大学出版社出版
@Query注解不仅可以设定查询语句,还可以设定新增、更新和删除的语句:
如果使用SQL语句,可以进行新增、更新和删除操作。
如果使用JPQL语句,只能进行更新和删除操作,不能进行新增操作。
@Modifying注解用来告诉底层Hibernate,@Query注解中设定的语句用于新增、更新和删除对象,而不是用于查询对象。
如果使用@Query注解来执行新增、更新和删除操作,还必须对当前方法用@Transactional注解来声明事务。
例如以下CustomerDao接口的方法联合使用了@Query、@Modifying和@Transactional注解:@Repository
public interface CustomerDao extends JpaRepository<Customer,Long>{
@Transactional
@Modifying
@Query(
value="insert into CUSTOMERS(NAME,AGE) values(?1,?2)",
nativeQuery=true)
int insertCustomer(String name,int age);
@Transactional
@Modifying
@Query("update Customer set age= ?1 where id=?2")
int updateCustomer(int age,Long id);
@Transactional
@Modifying
@Query("delete from Customer where id<2")
int deleteCustomer(Long id);
} |
以上CustomerDao接口的insertCustomer()方法的@Query注解使用SQL语句,updateCustomer()方法和deleteCustomer()方法的@Query注解使用JPQL语句。
@Modifying注解会限制以上方法的返回类型,只能是void、int或Integer类型,如果返回类型是int或Integer,表示数据库中受影响的对象的数目。
程序猿的技术大观园:www.javathinker.net
|
网站系统异常
系统异常信息 |
Request URL:
http://www.javathinker.net/WEB-INF/lybbs/jsp/topic.jsp?postID=3962
java.lang.NullPointerException
如果你不知道错误发生的原因,请把上面完整的信息提交给本站管理人员。
|
|