您好,登錄后才能下訂單哦!
在JPA中提供了很方便的分頁功能,那就是Pageable(org.springframework.data.domain.Pageable)以及它的實現(xiàn)類PageRequest(org.springframework.data.domain.PageRequest),詳細的可以見示例代碼。
1、改變CustomerRepository方法
/** * 一個參數(shù),匹配兩個字段 * @param name2 * @Param pageable 分頁參數(shù) * @return * 這里Param的值和=:后面的參數(shù)匹配,但不需要和方法名對應的參數(shù)值對應 * 這里增加了@QueryHints注解,是給查詢添加一些額外的提示 * 比如當前的name值為HINT_COMMENT是在查詢的時候帶上一些備注信息 */ @QueryHints(value = { @QueryHint(name = HINT_COMMENT, value = "a query for pageable")}) @Query("select c from Customer c where c.firstName=:name or c.lastName=:name") Page<Customer> findByName(@Param("name") String name2,Pageable pageable);
2、增加CustomerController方法pageable
/** * 分頁 * 應用查詢提示@QueryHints,這里是在查詢的適合增加了一個comment * 查詢結果是lastName和firstName都是bauer這個值的數(shù)據(jù) */ @RequestMapping("/pageable") public void pageable(){ //Pageable是接口,PageRequest是接口實現(xiàn) //PageRequest的對象構造函數(shù)有多個,page是頁數(shù),初始值是0,size是查詢結果的條數(shù),后兩個參數(shù)參考Sort對象的構造方法 Pageable pageable = new PageRequest(0,3, Sort.Direction.DESC,"id"); Page<Customer> page = repository.findByName("bauer",pageable); //查詢結果總行數(shù) System.out.println(page.getTotalElements()); //按照當前分頁大小,總頁數(shù) System.out.println(page.getTotalPages()); //按照當前頁數(shù)、分頁大小,查出的分頁結果集合 for (Customer customer: page.getContent()) { System.out.println(customer.toString()); } System.out.println("-------------------------------------------"); }
從示例代碼的注釋當中可以看到Page對象的相關參數(shù)及值的說明,更詳細的用法,參考PageRequest源碼。
小結:怎么樣,是不是很簡單很方便?!
參考:
官方文檔,http://docs.spring.io/spring-data/jpa/docs/current/reference/html/
DEMO,https://github.com/icnws/spring-data-jpa-demo
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持億速云。
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內(nèi)容。