SpringBoot-基础篇03

之前搭建了整个开发环境实现了登录注册,springBoot整合mybatis完成增删改查,今天完成分页查询,使用阿里云oss存储照片等资源,后期会尝试自己搭建分布式文件系统来实现。

一,SpringBoot+Mybatis完成分页查询

        1,导入分页插件坐标,我们需要使用分页插件帮助我们实现分页查询:


    com.github.pagehelper
    pagehelper-spring-boot-starter
    1.4.6

        2,实现controller层代码如下:

//文章列表(分页查询)
@GetMapping
public Result> getArticleByPage(
        Integer pageNum,
        Integer pageSize,
        @RequestParam(required = false) Integer categoryId,
        @RequestParam(required = false) String state
){
    PageBean
pageResult=articleService.getArticleByPage( pageNum, pageSize,categoryId,state); return Result.success(pageResult); }

        在这里前端传递四个参数,前两个参数pageNum和pageSize是前端传递的分页的页数和每页的记录数,后两个参数是分页查询需要的条件,需要注意的是,分页查询的条件可能不是必须的,于是我们加入RequestParam注解,将参数required改为false,标注传递的该参数不是必须的,之后就调用service层进行具体的代码实现:

3,service层实现:

//实现文章分页查询
public PageBean
getArticleByPage(Integer pageNum, Integer pageSize, Integer categoryId, String state) { //用于封装返回的数据 PageBean
pbResult=new PageBean<>(); //调用pagehelp插件开启分页查询 PageHelper.startPage(pageNum,pageSize); //调用mapper层进行查询 //查询的时候只能是登录用户查询自己的文章 Integer userId=ThreadLocalUtil.getId(); List
articleList=articleMapper.list(categoryId,state,userId); //将当前查询的所有文章数据强制转化为分页插件提供的Page类,指定泛型为文章类 Page
articlePage= (Page
) articleList; //及那个page中的数据封装金PageBean中返回 pbResult.setTotal(articlePage.getTotal()); pbResult.setItems(articlePage.getResult()); return pbResult; }

        在上述代码中,实现分页查询之前我们需要先调用pageHelp插件开启分页查询,也就是是 PageHelper.startPage(pageNum,pageSize);传递进去查询的页数和每页记录数,之后调用mapper进行查询,查询完之后返回结果,这时候插件的作用就体现出来了,我们直接将查询出来的结果封装在pageHelper插件提供的page对象中,(我这里代码直接强转),这时候,插件就会自动将我们查询的结果处理好,最后直接封装返回即可

SpringBoot-基础篇03_第1张图片

4,mapper层实现:

由于参数的不确定,我们这里不使用注解开发,使用xml文件编写动态sql来实现

ArticleMapper实现:

//进行文章的分页查询
List
list(Integer categoryId, String state, Integer userId);

ArticleMapper.xml实现:




    
    
    


在上述代码中,ArticleMapper.xml文件的位置要和ArticleMapper在同一个目录之下,一般放在resources目录下,结构如下:

SpringBoot-基础篇03_第2张图片

注意在resources目录下创建的是目录,所以不能使用 . 的方式,例如我这个目录创建的使用应该是com/qmlx/mapper/ArticleMapper.xml,不能是com.qmlx.mapper.ArticleMapper.xml.并且在xml文件中需要指定id以及resultType,也就是mapper中对应的方法以及返回的类型: