亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > Java > 正文

Spring Data分頁與排序的實現方法

2024-07-14 08:43:00
字體:
來源:轉載
供稿:網友

前言

在實際項目中對Spring Data的各種使用相當多,簡單的增刪改查Spring Data提供了現成的方法,一些復雜的,我們可以在接口方法寫And,Not等關鍵字來搞定,想寫原生SQL,CQL(Neo4j),Query DSL (Elasticsearch)的,直接使用@Query(“......”)注解搞定,真的是方便到不行!

當我們執行批量操作時,比如從數據庫中查找“Person”的所有實例或者根據國家查找每個人,我們經常進行分頁,以便我們可以向最終用戶提供一個小數據塊,并在下一個請求中,我們獲取下一個數據塊。

Spring Data為分頁提供支持。它創建了實現分頁的所有邏輯,例如所有頁面的行計數等等。

在Spring Data中實現分頁非常簡單。我們只需要按照以下步驟操作:

  • 在自定義存儲庫中,擴展  PagingAndSortingRepository。
  • 創建PageRequest對象,該對象是Pageable接口的實現。  此PageRequest對象獲取頁碼,頁面大小以及排序方向和排序字段。
  • 通過傳遞請求的頁碼和頁面限制,您可以獲取此頁面的數據。如果您傳遞錯誤的頁碼,Spring Data將負責處理并且不返回任何數據。

1.創建擴展PagingAndSortingRepository的存儲庫。

@Repositorypublic interface PersonRepositary extends PagingAndSortingRepository<Person, Long>,QueryDslPredicateExecutor<Person> { @Query("select p from Person p where p.country like ?1 order by country") List<Person> findByCountryContains(String country); List<Person> findPersonByHobbyName(String name); @Query("select p from Person p where p.id = ?1 and country='America'") Person findOne(Long id);}

2.  創建域對象。

@Entitypublic class Person { @Id @GeneratedValue(strategy=GenerationType.AUTO) private Long id; private String name; private String country; private String gender;@OneToMany(mappedBy="person",targetEntity=Hobby.class,  fetch=FetchType.EAGER,cascade=CascadeType.ALL)  List<Hobby> hobby;public String getName() { return name;}public void setName(String name) { this.name = name;}public String getCountry() { return country;}public void setCountry(String country) { this.country = country;}public String getGender() { return gender;}public void setGender(String gender) { this.gender = gender;}public Long getId() { return id;}public void setId(Long id) { this.id = id;}public List<Hobby> getHobby() { return hobby;}public void setHobby(List<Hobby> hobby) { this.hobby = hobby;}public void addHobby(Hobby ihobby){ if(hobby == null) {  hobby = new ArrayList<Hobby>(); } hobby.add(ihobby);} @Override public String toString() {  return "Person [id=" + id + ", name=" + name + ", country=" + country + ", gender=" + gender + "]"; }}

3.獲取所有人員。創建一個限制為1的PageRequest對象并請求第一頁。

@SpringBootApplication@EnableJpaRepositories("com.example.repo")public class PersonApplication { @Autowired HobbyRepository hRepo; private static final Logger log = LoggerFactory.getLogger(PersonApplication.class); @Bean public CommandLineRunner demo(PersonRepositary repository) {  findAll(repository);  return null; } private PageRequest gotoPage(int page) {  PageRequest request = new PageRequest(page,1)  return request; } private void findAll(PersonRepositary repository) {  Iterable<Person> pList = repository.findAll(gotoPage(0));  for(Person p : pList)   log.info("Person " + p); } public static void main(String[] args) {  SpringApplication.run(PersonApplication.class, args); }}

運行時SQL輸出:

Hibernate: 
    select
        count(person0_.id) as col_0_0_ 
    from
        person person0_
Hibernate: 
    select
        person0_.id as id1_1_,
        person0_.country as country2_1_,
        person0_.gender as gender3_1_,
        person0_.name as name4_1_ 
    from
        person person0_ limit ?
Person Person [id=13, name=Samir mitra, country=America, gender=male]

分頁和排序代碼實現

要進行排序,我們必須傳遞排序方向和排序字段以及頁碼和限制。假設我們想按國家名稱按升序排序 - 我們修改  goto 方法如下:

private PageRequest gotoPage(int page){ PageRequest request = new PageRequest(page,1,Sort.Direction.ASC,"country"); return request;}

SQL輸出:

select
        count(person0_.id) as col_0_0_ 
    from
        person person0_
Hibernate: 
    select
        person0_.id as id1_1_,
        person0_.country as country2_1_,
        person0_.gender as gender3_1_,
        person0_.name as name4_1_ 
    from
        person person0_ 
    order by
        person0_.country asc limit ?

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對VeVb武林網的支持。


注:相關教程知識閱讀請移步到JAVA教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美一区二区大胆人体摄影专业网站| 成人av番号网| 亚洲黄色免费三级| 成人黄色片网站| 久久精品色欧美aⅴ一区二区| 日韩电影中文字幕一区| 国产精品一区=区| 欧美性高跟鞋xxxxhd| 日韩在线播放视频| 精品国产一区二区三区久久狼黑人| 成年无码av片在线| 国产99久久精品一区二区 夜夜躁日日躁| 亚洲人成电影在线播放| 精品一区电影国产| 国产精品久久精品| 国产欧美在线视频| 亚洲一区二区在线| 另类图片亚洲另类| 日韩欧美国产黄色| 国产精品久久久久久av| 亚洲国产精品国自产拍av秋霞| 精品国偷自产在线视频99| 成人免费视频97| 亚洲国产欧美一区二区三区同亚洲| 国模gogo一区二区大胆私拍| 亚洲国产一区二区三区在线观看| 久久久精品国产网站| 精品色蜜蜜精品视频在线观看| 26uuu另类亚洲欧美日本一| 高清欧美一区二区三区| 欧美一级bbbbb性bbbb喷潮片| 91精品国产综合久久男男| 疯狂做受xxxx欧美肥白少妇| 日本国产一区二区三区| 精品久久久中文| 精品久久久久久中文字幕大豆网| 成人免费淫片视频软件| 色综久久综合桃花网| 精品成人国产在线观看男人呻吟| 国产精品视频公开费视频| 国产精品久久视频| 日韩av不卡在线| 精品香蕉一区二区三区| 亚洲老板91色精品久久| 久久久久久成人精品| 欧美主播福利视频| 91成品人片a无限观看| 欧美成人精品在线观看| 色婷婷亚洲mv天堂mv在影片| 欧美激情一区二区三区高清视频| 成人av色在线观看| 亚洲第一区第一页| 欧美精品18videos性欧美| 国产成人久久久精品一区| 日韩欧美精品在线观看| 欧美又大又粗又长| 国产精品成人av在线| 欧美黑人视频一区| 热99精品里视频精品| 精品国产一区二区三区久久狼黑人| 一区二区欧美亚洲| 日韩视频在线免费| 欧美性高跟鞋xxxxhd| 亚洲一区二区三区xxx视频| 九九热这里只有精品免费看| 日韩美女免费观看| 欧美日韩xxx| 日韩免费在线电影| 亚洲欧美日韩天堂一区二区| 九九热r在线视频精品| 国色天香2019中文字幕在线观看| 国产精品18久久久久久麻辣| 大量国产精品视频| 精品国产区一区二区三区在线观看| 成人在线免费观看视视频| 亚洲精品一区久久久久久| 一区二区在线视频播放| 精品国产一区二区三区在线观看| 亚洲成人免费网站| 欧美日韩高清在线观看| 国产精品福利在线| 欧美成人精品不卡视频在线观看| 国产激情综合五月久久| 97精品在线视频| 国产在线不卡精品| 国产综合在线看| 亚洲一区中文字幕在线观看| 精品福利在线看| 国产精品中文字幕在线| 欧美另类69精品久久久久9999| 精品国产乱码久久久久久虫虫漫画| 欧美国产极速在线| 国内精品视频一区| 日韩欧美中文免费| 国产精品嫩草影院久久久| 国产精品成人aaaaa网站| 国产精品av网站| 51午夜精品视频| 久久久久久久久久av| 日韩性xxxx爱| 91地址最新发布| 亚洲自拍偷拍福利| 久久全国免费视频| 日韩在线一区二区三区免费视频| 欧美丝袜一区二区三区| 91久久久亚洲精品| 国产成人精品视频在线观看| 中文字幕欧美日韩精品| 国产精品一区二区av影院萌芽| 国产一区二区黑人欧美xxxx| 日韩av手机在线| 国产精品久久久久久久久久久久| 日本成人精品在线| 日韩欧美高清视频| 91成人免费观看网站| 国产一区二区三区视频| 欧美电影免费在线观看| 色噜噜狠狠狠综合曰曰曰88av| 亚洲视频电影图片偷拍一区| 97av在线视频| 精品成人国产在线观看男人呻吟| 国产精品pans私拍| 亚洲视频视频在线| 欧美黑人性猛交| 影音先锋欧美精品| 亚洲风情亚aⅴ在线发布| 91精品久久久久久久久久入口| 国产精品日韩av| 国产精品一区二区久久| 欧美在线日韩在线| 91中文字幕在线观看| 亚洲国产精品中文| 欧美日韩国产成人| 欧美日韩国产精品一区| www.日韩系列| 2019av中文字幕| 国产精品一区二区久久| 欧美在线日韩在线| 亚洲欧洲日产国码av系列天堂| 欧美精品videossex性护士| 亚洲成人网av| 91中文在线视频| 日韩一区av在线| 国产一区二区动漫| 日韩麻豆第一页| 欧美精品国产精品日韩精品| 国产精品高潮呻吟久久av黑人| 欧美超级免费视 在线| 国语自产精品视频在线看| 狠狠躁天天躁日日躁欧美| 久久国产精品免费视频| 国产日韩综合一区二区性色av| 精品久久久免费| 日本高清+成人网在线观看| 日韩av电影免费观看高清| 久久精品一本久久99精品| 国产精品精品久久久久久| 国产精品福利网| 亚洲精品国产精品自产a区红杏吧| 欧美极品少妇xxxxⅹ喷水| 欧美多人爱爱视频网站| 亚洲第一中文字幕在线观看| 亚洲a成v人在线观看| 亚洲欧美在线磁力|