- 翻页原理
数据库中数据往往非常多,实际关心的往往是最新的。通常的做法就是分页显示,将数据按一定排序,最关心的先显示出来,如果需要后序数据,用户发起下一页请求即可。
sql翻页语句
select id,title from question where user_id=11 limit 0,8;
从第0条开始,一页8条数据
PageHelper翻页组件
第三方组件PageHelper提供了上述页号换算Limit参数算法
第一步导入组件
父工程pom.xml
1.4.1 com.github.pagehelper pagehelper-spring-boot-starter ${pagehelper.starter.version}
straw-protal项目pom.xml
com.github.pagehelper
pagehelper-spring-boot-starter
重构方法
public interface IQuestionService extends IService{ PageInfo getMyQuestions(Integer pageNumber,Integer pageSize); }
实现方法
@Override
public PageInfo getMyQuestions(Integer pageNumber,Integer pageSize) {
if(pageNumber == null || pageSize == null){
throw new ServiceException("翻页参数错误");
}
PageHelper.startPage(pageNumber,pageSize);
// 利用QuestionMapper进行查询,返回结构是list
List questions = questionMapper.selectList(query);
return new PageInfo<>(questions);
}
controller方法
@RestController
@RequestMapping("/v1/question")
@Slf4j
public class QuestionController {
@Autowired
IQuestionService questionService;
@GetMapping("/my")
public R> my(){
try{
log.debug("开始请求当前用户的全部问题");
PageInfo pageInfo = questionService.getMyQuestions(1,8);
return R.ok(pageInfo);
}
catch (ServiceException e){
log.error("加载当前用户失败",e);
return R.failed(e);
}
}
}
测试方法
@Test
@WithMockUser(username = "st2",password = "888888")
public void getMyQuestion(){
PageInfo pageInfo = questionService.getMyQuestions(1,8);
System.out.println(pageInfo);
//获得list
List questions = pageInfo.getList();
questions.forEach( question -> System.out.println(question) );
//System.out.println(pageInfo);
}



