使用SpringJPA 直接實現count(*)

SpringJPA 直接實現count(*)

剛開始使用JPA時,基本都依賴@query(SQL)註解通過原生sql來實現

根據編號統計條數:

方法一

@Query(" select count(t) from FollowerInfo t where investUserId = :invUserId")
    Integer findFollowerNumberByInvUserId(@Param("invUserId") Long invUserId);

這種原生的方式,跟直接寫SQL沒什麼區別。雖然能實現功能,但是浪費瞭JPA的簡潔簡化代碼的設計的優點。

網上看到另外一個方法:

List findAll(Specification spec);

在repository層findAll,然後在service層封裝,獲取list.size()來處理總條數問題。

這樣避免瞭寫SQL語句。

今天看瞭一下CrudRepository的源碼 發現該接口源碼裡面有一個函數:

方法二

/**
     * Returns the number of entities available.
     * 
     * @return the number of entities
     */
    long count();

於是繼承瞭CrudRepository 寫瞭一個demo:

方法三

Long countByInvestUserId(Long investUserId);

一行代碼就全部搞定! 效果跟方法1一樣

(spring data jpa)jpa中使用count計數方法

spring data jpa中使用count計數方法很簡單

直接在dao層寫方法即可

int countByUidAndTenementId(String parentUid, String tenementId);

這樣即可根據傳入的字段查詢即可。

以上為個人經驗,希望能給大傢一個參考,也希望大傢多多支持WalkonNet。

推薦閱讀: