1、新增PageHelper座標依賴
<!--pagehelper座標依賴--> <dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper-spring-boot-starter</artifactId> <version>1.4.6</version> </dependency>
2、建立自定義返回實體PageBean
//分頁返回結果物件 @Data @NoArgsConstructor @AllArgsConstructor public class PageBean <T>{ private Long total;//總條數 private List<T> items;//當前頁資料集合 }
3、Controller 編寫介面返回 PageBean<實體>
@GetMapping public Result<PageBean<Article>> list(Integer pageNum,Integer pageSize, @RequestParam(required = false) Integer categoryId,//非必填 @RequestParam(required = false) String state //非必填 ) { PageBean<Article> list = articleService.list(pageNum,pageSize,categoryId,state); return Result.success(list); }
4、生成Service,生成Impl //此處注意PageHelper版本必須為第1步的版本不然強轉處會報錯
@Override public PageBean<Article> list(Integer pageNum, Integer pageSize, Integer categoryId, String state) { //開啟分頁查詢PageHelper PageHelper.startPage(pageNum,pageSize); //只能檢視自己新建的文章 , 獲取當前登入人id Map<String,Object> map = ThreadLocalUtil.get(); Integer userId = (Integer) map.get("id"); List<Article> articleList = articleMapper.list(userId, categoryId,state); ////返回方式1 強轉 //Page中提供了方法,可以獲取PageHelper分佈查詢後 得到的總記錄條數和當前頁資料 Page<Article> p = (Page<Article>) articleList; //把資料填充到PageBean物件中 PageBean<Article> pb = new PageBean<>(); pb.setItems(p.getResult()); pb.setTotal(p.getTotal()); return pb; ////返回方式2 直接把 articleList 丟到 PageInfo 中 然後返回 ////這種返回 定義方法返回處就要變為PageInfo 或者轉為 json 串返回 //PageInfo p = new PageInfo(articleList); //return p; }
5、因為有的引數為非必填項, 使用註解寫動態sql會非常的麻煩,這裡使用對映配置檔案寫動態sql
在resources資料夾建立與mapper介面所在包結構一樣的目錄資料夾
在此包下建立與mapper下相同名的ArticleMapper
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.example.bigevent.mapper.ArticleMapper"> <!--這裡路徑寫mapper路徑--> <!--動態sql--> <select id="list" resultType="com.example.bigevent.pojo.Article"> # id與mapper中的方法名一致 resultType為返回型別 select * from article <where> create_user = #{userId} <if test="categoryId!=null"> and category_id =#{categoryId} </if> <if test="state!=null"> and state =#{state} </if> </where> </select> </mapper>
效果展示:
直接返回Json串參考:https://www.cnblogs.com/JoeYD/p/14573022.html