使用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。
推薦閱讀:
- 詳解使用Spring Data repository進行數據層的訪問問題
- SpringBoot2 Jpa 批量刪除功能的實現
- Spring Data JPA中 in 條件參數的傳遞方式
- 基於JPA的Repository使用詳解
- Spring DATA JPA 中findAll 進行OrderBy方式