JPA查询 修改

 /** 根据点位id查询数据 */
    @Query(value = "SELECT it FROM IotPoint it WHERE  it.pointId = :#{#iotPointParam.pointId} ")
    IotPoint getObjectByid(@RequestParam("iotPointParam") IotPointParam iotPointParam);

  /** 根据多个字段查询数据 */
    @Transactional
    @Modifying(clearAutomatically = true)
    @Query(value = "UPDATE IotSubPoint isp SET isp.address = :#{#iotSubPoint.address}, isp.dataType = :#{#iotSubPoint.dataType} WHERE  isp.iotPointId = :#{#iotSubPoint.iotPointId}")
    int updataByPointId(@RequestParam("iotSubPoint") IotSubPoint iotSubPoint);
### 关于 `@Query` 注解在 JPA 中的使用 #### 基本概念 `@Query` 是 Spring Data JPA 提供的一个强大工具,允许开发者编写定制化的查询逻辑。此注解可以用于定义基于 JPQL 或者原生 SQL 的查询语句[^1]。 #### 使用 JPQL 进行查询 当不指定 `nativeQuery = true` 参数时,默认情况下会采用 JPQL 查询方式,在这种模式下,实体类的名字以及其属性将被映射到数据库中的表结构上: ```java public interface UserRepository extends JpaRepository<User, Long> { @Query("SELECT u FROM User u WHERE u.emailAddress = ?1") List<User> findByEmailAddress(String emailAddress); } ``` 这段代码展示了如何利用 `@Query` 来执行简单的条件匹配操作,并返回符合条件的对象列表[^3]。 #### 利用 LIKE 表达式实现模糊搜索 对于更复杂的场景比如模糊查找,则可以通过结合 JPQL 和 `LIKE` 操作符来完成。下面的例子说明了怎样构建一个带有通配符 `%` 的查询字符串来进行部分匹配: ```java public interface UserRepository extends JpaRepository<User, Long> { @Query("FROM User u WHERE u.name LIKE %?1%") Page<User> findByNameLike(String namePart, Pageable pageable); } ``` 这里值得注意的是,为了提高灵活性并支持分页功能,还可以引入 `Pageable` 类型作为参数传递给方法调用方[^2]。 #### 执行更新/删除操作 (需加 @Modifying) 除了读取数据之外,有时也需要修改现有记录的状态;这时就需要额外加上 `@Modifying` 注解以表明这是一个变更性质的操作: ```java public interface UserRepository extends JpaRepository<User, Long> { @Modifying @Query("UPDATE User u SET u.enabled = false WHERE u.lastLogin < :date") int disableUsersByLastLogin(@Param("date") LocalDate date); } ``` 以上例子中展示了一个批量禁用用户的案例,其中还涉及到了日期类型的处理[^4]。 #### 调试与测试 最后提醒一点,在实际开发过程中应当重视单元测试环节,确保所编写的查询能够按预期工作。例如可以在集成测试环境中创建相应的 Repository Bean 实例并通过它发起请求验证结果正确性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值