jpa本身自带分页方法:
repository.findAll(example,Pageable);
如果要使用复杂条件查询,需要自己写SQL/HQL。
在@Query中使用分页查询方法如下:
/**
* 分页查询功能
*/
@Query("select t.id, t.taskName, t.subTaskName, t.createDate, t.endDate, t.errorMsg, "
+ "t.publishStatus, t.taskStage from TaskInfo t where t.delete=false and t.userId=?1")
List<TaskInfo> getTaskListByPage(Integer userId, Pageable pageable);
没错,直接传jpa自带的实体类Pageable,并设置参数即可,JPA会自动识别并解析分页SQL,如此来看,JPA还是考虑得挺周全的。
java调用
public JSONObject search(int userId, int page, int size) {
Sort sort = new Sort(Sort.Direction.DESC, "taskId");
// 分页查询
Pageable pageable = PageRequest.of(page, size, sort);
// Page<TaskInfo> sd = taskInfoRepo.findAll(pageable);
List<TaskInfo> taskInfoList = taskInfoRepo.getTaskListByPage(userId, pageable);
json.put("list", taskInfoList);
json.put("result", true);
return json;
}