第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Spring Data JPA 本機查詢中的變量

Spring Data JPA 本機查詢中的變量

呼如林 2023-11-10 16:33:41
OrderEntity使用 Spring Dat JPA,我需要查詢數(shù)據(jù)庫并根據(jù) astartAmt和 aendAmt金額返回一系列s。我不確定是否應該將這兩個變量映射到實體OrderEntity,作為某種類型的單獨類/實體/模型中的字段,或者只是在我的本機查詢中聲明它們。也許我應該使用實現(xiàn)的服務EntityManager.createNativeQuery()?想做類似的事情:@Repositorypublic interface OrderRangeRepository extends JpaRepository<OrderEntity, OrderEntityID> {        @Query(value = "SELECT * FROM Orders WHERE Amount BETWEEN startAmt AND endAmt;" , nativeQuery=true)    List<OrderEntity> findOrdersBy(int startAmt, int endAmt);}如果我要EntityManager.createNativeQuery()在服務中使用,也許如下所示:@Servicepublic class OrderRangeService {    @Autowired    EntityManager entityManager;    public List<OrderEntity> findAmountsBetween() {        List<OrderEntity> amountsBetween = entityManager.createNativeQuery("SELECT * FROM Orders WHERE Amount BETWEEN ?1 AND 2?;")        .setParameter(1, "startAmt")        .setParameter(2, "endAmt")        .getResultList();        return amountsBetween;    }}
查看完整描述

2 回答

?
30秒到達戰(zhàn)場

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

}


查看完整回答
反對 回復 2023-11-10
?
慕沐林林

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


查看完整回答
反對 回復 2023-11-10
  • 2 回答
  • 0 關注
  • 168 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號