2 回答

TA貢獻1828條經驗 獲得超6個贊
您可以使用 Spring Data JPA 來實現(xiàn)此目的,而無需定義本機查詢。
@Repository
public interface OrderRangeRepository extends JpaRepository<OrderEntity, OrderEntityID> {
List<OrderEntity> findByAmountBetween(int startAmt, int endAmt);
}
如果您想使用本機查詢,請將其更改為
@Query(value = "SELECT * FROM Orders WHERE Amount BETWEEN :startAmt AND :endAmt" , nativeQuery=true)
List<OrderEntity> findOrdersBy(@Param("startAmt") int startAmt, @Param("endAmt") int endAmt);
您可以通過執(zhí)行以下操作來調用服務中的查詢
@Service
public class OrderRangeService {
@Autowired
OrderRangeRepository orderRangeRepository ;
public List<OrderEntity> findAmountsBetween(int startAmt, int endAmt) {
List<OrderEntity> amountsBetween = orderRangeRepository.findByAmountBetween(startAmt, endAmt);
return amountsBetween;
}
}
最后,從您的控制器中,您應該自動裝配 OrderRangeService 并調用 findAmountsBetween 服務方法
@Autowired
OrderRangeService orderRangeService;
@GetMapping("/amountsFromAndTo")
@ResponseBody
public String getAmounts(@RequestParam int startAmt, @RequestParam int endAmt) {
List<OrderEntity> orderEntityL = orderRangeService.findAmountsBetween(startAmt, endAmt);
return orderEntityL.toString();
}

TA貢獻2016條經驗 獲得超9個贊
1. 命名參數(shù)
每個用 @Param 注釋的參數(shù)必須具有與相應的 JPQL 或 SQL 查詢參數(shù)名稱匹配的值字符串。具有命名參數(shù)的查詢更易于閱讀,并且在需要重構查詢時更不易出錯。
@Query(value = "SELECT * FROM Orders WHERE Amount BETWEEN :startAmt AND :endAmt;" , nativeQuery=true) List<OrderEntity> findOrdersBy(@Param("startAmt") int startAmt, @Param("endAmt") int endAmt); }
2. 索引查詢參數(shù)
Spring Data 將按照方法參數(shù)在方法聲明中出現(xiàn)的順序將方法參數(shù)傳遞給查詢
@Query(value = "SELECT * FROM Orders WHERE Amount BETWEEN ?1 AND ?2;" , nativeQuery=true)List<OrderEntity> findOrdersBy(int startAmt, int endAmt);
添加回答
舉報