JPA中@Query的使用

在使用@Query中,需要使用以下几个注解:

    @Transactional//注解用于提交事务,若没有带上这句,会报事务异常提示
    @Modifying(clearAutomatically = true)//自动清除实体里保存的数据
    @Query(value = "update t_user set user_title = '副教授' where id = ?", nativeQuery = true)
    int updateById(int id);
@Modifying(clearAutomatically = true)必须加,否则会报could not extract ResultSet错误

@Query中加nativeQuery表示执行本地SQL,应该就是标准的Mysql语法(使用Mysql数据库)

JPA@Query注解用于在Repository接口中定义自定义查询方法。它允许你使用JPQL或SQL语句来定义查询,可以带有参数,也可以使用命名参数或位置参数。 以下是@Query注解的示例: ```java @Query("SELECT c FROM Customer c WHERE c.firstName = :firstName") List<Customer> findByFirstName(@Param("firstName") String firstName); ``` 这个示例使用JPQL语句来查询Customer实体,其中条件是firstName等于指定的值。注意,这里使用了@Param注解来指定命名参数的名称。 @Query注解还可以使用Native SQL语句来编写查询,例如: ```java @Query(value = "SELECT * FROM customers WHERE first_name = ?1", nativeQuery = true) List<Customer> findByFirstName(String firstName); ``` 这个示例使用Native SQL语句来查询customers表,其中条件是firstName等于指定的值。注意,这里使用了位置参数来指定查询参数的值,并且设置了nativeQuery参数为true,表示使用Native SQL语句。 除了基本的查询语句之外,@Query注解还支持各种查询操作,例如更新、删除和计数等。以下是一些示例: ```java @Modifying @Query("UPDATE Customer c SET c.firstName = :firstName WHERE c.id = :id") void updateFirstNameById(@Param("id") Long id, @Param("firstName") String firstName); @Modifying @Query("DELETE FROM Customer c WHERE c.id = :id") void deleteById(@Param("id") Long id); @Query("SELECT COUNT(*) FROM Customer") long count(); ``` 这些示例中,@Modifying注解用于表示这是一个修改操作,而@Query注解则用于定义相应的JPQL或SQL语句。 总之,@Query注解是JPA中非常有用的注解之一,它允许你定义自定义查询方法,并且可以使用JPQL或SQL语句来定义查询。它非常灵活,可以满足各种查询需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值