本次主要说一下jpa提供的查询方式:
1、JPA原生的简单语法
jpa根据fang方法名自动生成sql7语句。主要语法为:
- 查询:以findBy开头,后面跟上属性名。例:findByName 或者findByNameAndId
- 删除:以deleteBy开头,后面跟上属性名
- 新增修改:统一使用save
- 统计:countBy开头,后面跟上属性
其他常用的关键字如下图
2、原生分页查询
jpa提供了findAll(Pageable pageable)
Pageable pageable = PageRequest.of(1,2);
Page<User> users = userRepository.findAll(pageable);
List<User> userList = users.getContent();
当然如果我们需要进行有条件的分页查询,语法参照原生的语法,参数多加一个Pageable 就行
Page<User> findByName(String name, Pageable pageable);
或者加上关键字:
Page<User> findByNameNot(String name, Pageable pageable);
对参数Pageable对象,我们可以指定页数,每页条数,以及排序方式等
Pageable是一个接口,它的实现duix对象是PageRequest,如下图:
在 PageRequest类中提供了三个构造方法
可以直接new一个PageRequest对象,也可以调用of()静态方法, 方法中可以传page(当前页数),size(每页条数)以及Sort排序信息或者可以不用Sort,直接定义排序顺序Direction.ASC或Direction.DESC,然后后面跟上要排序的字段,可以是一个或多个
如果使用Sort,可以new一个Sort对象,如下:
Sort sort = new Sort(Sort.Direction.DESC,"age");
注: 这里page是从0开始的