溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

SpringJPA repository nativeQuery如何自定義返回對(duì)象Projection

發(fā)布時(shí)間:2021-10-19 18:02:25 來(lái)源:億速云 閱讀:189 作者:柒染 欄目:大數(shù)據(jù)

SpringJPA repository nativeQuery如何自定義返回對(duì)象Projection ,針對(duì)這個(gè)問(wèn)題,這篇文章詳細(xì)介紹了相對(duì)應(yīng)的分析和解答,希望可以幫助更多想解決這個(gè)問(wèn)題的小伙伴找到更簡(jiǎn)單易行的方法。

Spring JPA 封裝的一套CRUD的操作大大簡(jiǎn)化了開(kāi)發(fā)流程,提高了開(kāi)發(fā)效率。但是不免會(huì)有一些特殊查詢(xún),需要自己寫(xiě)sql,返回自定義字段,需要用自定義的對(duì)象接收,有什么好的方法呢?

 通過(guò)網(wǎng)上查詢(xún)大多數(shù)其他人的解決方案,找到了官網(wǎng)對(duì)應(yīng)的文檔:https://www.baeldung.com/spring-data-jpa-projections

簡(jiǎn)單的來(lái)說(shuō)就是 在repository 里邊自定義的方法 ,在需要用自定義對(duì)象接收時(shí),需要接收對(duì)象問(wèn)interface 類(lèi)型,并且 里邊定義了所需要接收字段的get方法,比如需要接收name字段,需要定義 String getName(); 

@Repository
public interface ItemRepository extends JpaRepository<Item, Integer>{

    /**
     * 批量查詢(xún)用戶(hù)時(shí)間段內(nèi) 總分
     */
    @Query(nativeQuery = true, value = "select user_info_id userId, sum(score_val) score FROM tb_item where is_del = 0 and `status` = 1 and user_info_id in (:userIds) and end_date BETWEEN :startDate and :endDate GROUP BY user_info_id")
    List<ItemProjection> sumUserScore(@Param("userIds") List<Integer> userIds, @Param("startDate") Date startDate, @Param("endDate") Date endDate);
}

//自定義的接收對(duì)象
//ItemProjection:
public interface ItemProjection {
    Integer getUserId();
    BigDecimal getScore();
}

非常的清晰明了,這是網(wǎng)絡(luò)上最常用的,也是比較簡(jiǎn)單的一種解決方案

當(dāng)然了還有一種我自己的解決方案(至少我沒(méi)從網(wǎng)上搜到~_~)

就是自定義converter ,想使用什么接收就使用什么接收!因?yàn)檫@個(gè)方案是在 連一個(gè)interface都不想建的“懶惰”的程序員的吐槽下剛誕生不久,就不在這里說(shuō)了。

關(guān)于SpringJPA repository nativeQuery如何自定義返回對(duì)象Projection 問(wèn)題的解答就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,如果你還有很多疑惑沒(méi)有解開(kāi),可以關(guān)注億速云行業(yè)資訊頻道了解更多相關(guān)知識(shí)。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI