SpringData学习03
滴水穿石
1、
CrudRepository 是 Repository 类的一个子集,主要实现了一些 CRUD 的方法
示例:
@Transactional public void savePersons(List<Person> pList){ pRepository.save(pList); }
单元测试
@Test public void savesTest(){ List<Person> plist = new ArrayList<>(); Person p = null; for(int i = 'a' ; i < 'z' ; i++){ p = new Person(); p.setName(i + "" + i); p.setAge(i); p.setBrith(new Date()); p.setEmail(i + "" + i + "@cfb.com"); plist.add(p); } pService.savePersons(plist); }
结果: 测试通过,入库成功
2、
PagingAndSortingRepository 是 CrudRepository 的子类,多了分页方法
示例:
service层
public Page<Person> findForPage(PageRequest pRequest){ return pRepository.findAll(pRequest); }
单元测试
@Test public void findForPage() { int page = 3; int size = 5; PageRequest pRequest = new PageRequest(page, size); Page<Person> plist = pService.findForPage(pRequest); System.out.println("总条数: " + plist.getTotalElements()); System.out.println("总页数: " + plist.getTotalPages()); System.out.println("当前页数: " + plist.getNumber()); System.out.println("当前页面记录数: " + plist.getNumberOfElements()); System.out.println("当前页面List: " + plist.getContent()); }
测试结果
由此可以看出 page 是从 0 开始计算的
关于排序
修改上边的分页中的代码
//关于排序 Order order1 = new Order(Direction.DESC, "id"); Order order2 = new Order(Direction.ASC,"email"); Sort sort = new Sort(order1,order2); PageRequest pRequest = new PageRequest(page, size, sort);
测试结果:
以上的分页无法通过条件查询
怎么破?继续往下
—————————————————————————————————————————————————————————————————————————
无论如何,心平气和