接口继承于 CrudRepository 接口,拥有CrudRepository 接口的所有方法, 并新增两个功能:分页和排序。 但是这两个方法不能包含筛选条件。
使用方法:
/**
* PagingAndSortingRepository 接口使用
* 定义的方法名称 参考文档定义
* 提供分页和排序功能
*/
public interface UserDao extends PagingAndSortingRepository<Users,Integer> {
}
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:applicationContext.xml")
public class TestDemo {
@Autowired
private UserDao usersDao;
/**
* 分页
*/
@Test
public void test1(){
int page = 0; //page:当前页的索引。注意索引都是从 0 开始的。
int size = 3;// size:每页显示 3 条数据
PageRequest pageable= new PageRequest(page, size);
Page<Users> p = this.usersDao.findAll(pageable);
System.out.println("数据的总条数:"+p.getTotalElements());
System.out.println("总页数:"+p.getTotalPages());
List<Users> list = p.getContent();
for (Users users : list) {
System.out.println(users);
}
}
}
案例:
1.Entity 实体类
package com.dwx.bean;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;
@Entity
@Table(name="t_book")
public class Book {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer bookId; //图书编号
private String bookName; //图书名称
private String category; //类别
private String author; //作者
private String press; //出版社
private Double price; //价格
public Integer getBookId() {
return bookId;
}
public void setBookId(Integer bookId) {
this.bookId = bookId;
}
public String getBookName() {
return bookName;
}
public void setBookName(String bookName) {
this.bookName = bookName;
}
public String getCategory() {
return category;
}
public void setCategory(String category) {
this.category = category;
}
public String getAuthor() {
return author;
}
public void setAuthor(String author) {
this.author = author;
}
public String getPress() {
return press;
}
public void setPress(String press) {
this.press = press;
}
public Double getPrice() {
return price;
}
public void setPrice(Double price) {
this.price = price;
}
}
2.Dao接口 使用PagingAndSortingRepository
package com.dwx.repository;
import org.springframework.data.repository.PagingAndSortingRepository;
import com.dwx.bean.Book;
public interface BookRepository extends PagingAndSortingRepository<Book, Integer> {
}
3.service 业务层
package com.dwx.service;
import javax.annotation.Resource;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Sort;
import org.springframework.stereotype.Service;
import com.dwx.bean.Book;
import com.dwx.repository.BookRepository;
@Service
public class BookService {
@Resource
private BookRepository bookRepository;
public Iterable<Book> findAllSort(Sort sort){
return bookRepository.findAll(sort);
}
public Page<Book> findAll(Pageable page){
return bookRepository.findAll(page);
}
}
4. controller 控制层
package com.dwx.controller;
import java.util.List;
import javax.annotation.Resource;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Sort;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.dwx.bean.Book;
import com.dwx.service.BookService;
@RestController
public class BookController {
@Resource
private BookService bookService;
@RequestMapping("/sort")
public Iterable<Book> sortBook(){
Sort sort=new Sort(Sort.Direction.DESC,"bookId");
Iterable<Book> bookSort=bookService.findAllSort(sort);
return bookSort;
}
@RequestMapping("/pager")
public List<Book> sortPagerBook(int pageIndex){
Sort sort=new Sort(Sort.Direction.DESC,"bookId");
Pageable page=PageRequest.of(pageIndex-1, 2,sort);
Page<Book> bookDatas=bookService.findAll(page);
List<Book> books=bookDatas.getContent();
return books;
}
}