3.2 文章列表(条件分页)
3.2.1 基本信息
请求路径:/article
请求方式:GET
接口描述:该接口用于根据条件查询文章,带分页
3.2.2 请求参数
请求参数格式:queryString
请求参数说明:
参数名称 | 说明 | 类型 | 是否必须 | 备注 | |
---|---|---|---|---|---|
pageNum | 当前页码 | number | 是 | ||
pageSize | 每页条数 | number | 是 | ||
categoryId | 文章分类ID | number | 否 | ||
state | 发布状态 | string | 否 | 已发布 | 草稿 |
请求数据样例:
pageNum=1&pageSize=3&categoryId=2&state=草稿
3.2.3 响应数据
响应数据类型:application/json
响应参数说明:
名称 | 类型 | 是否必须 | 默认值 | 备注 | 其他信息 |
---|---|---|---|---|---|
code | number | 必须 | 响应码, 0-成功,1-失败 | ||
message | string | 非必须 | 提示信息 | ||
data | object | 必须 | 返回的数据 | ||
|-total | number | 必须 | 总记录数 | ||
|-items | array | 必须 | 数据列表 | ||
|-id | number | 非必须 | 主键ID | ||
|-title | string | 非必须 | 文章标题 | ||
|-content | string | 非必须 | 文章正文 | ||
|-coverImg | string | 非必须 | 文章封面图像地址 | ||
|-state | string | 非必须 | 发布状态 | 已发布|草稿 | |
|-categoryId | number | 非必须 | 文章分类ID | ||
|-createTime | string | 非必须 | 创建时间 | ||
|-updateTime | string | 非必须 | 更新时间 |
响应数据样例:
{
"code": 0,
"message": "操作成功",
"data": {
"total": 1,
"items": [
{
"id": 5,
"title": "陕西旅游攻略",
"content": "兵马俑,华清池,法门寺,华山...爱去哪去哪...",
"coverImg": "https://big-event-gwd.oss-cn-beijing.aliyuncs.com/9bf1cf5b-1420-4c1b-91ad-e0f4631cbed4.png",
"state": "草稿",
"categoryId": 2,
"createTime": "2023-09-03 11:55:30",
"updateTime": "2023-09-03 11:55:30"
}
]
}
}
需要用到PageBean
package walker.pojo;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
//分页返回结果对象
@Data
@NoArgsConstructor
@AllArgsConstructor
public class PageBean <T>{
private Long total;//总条数
private List<T> items;//当前页数据集合
}
PageHelper插件
<!-- https://mvnrepository.com/artifact/com.github.pagehelper/pagehelper-spring-boot-starter -->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>2.1.0</version>
</dependency>
文章列表|条件分页接口代码
- controller
@GetMapping
public Result<PageBean<Article>> list(
Integer pageNum,
Integer pageSize,
@RequestParam(required = false) Integer categoryId, // 不是必须的参数
@RequestParam(required = false ) String state
) {
PageBean<Article> pb = articleService.list(pageNum, pageSize, categoryId, state);
return Result.success(pb);
}
- service
PageBean<Article> list(Integer pageNum, Integer pageSize, Integer categoryId, String state);
- serviceImpl
@Override
public PageBean<Article> list(Integer pageNum, Integer pageSize, Integer categoryId, String state) {
// 创建PageBean对象
PageBean<Article> pb = new PageBean<>();
// 开启分页查询 插件:PageHelper
PageHelper.startPage(pageNum, pageSize);
// 调用mapper
Map<String, Object> map = ThreadLocalUtil.get();
Integer userId = (Integer) map.get("id");
List<Article> as = articleMapper.list(userId, categoryId, state);
// Page中提供了方法,可以获取PageHelper分页查询后得到的总记录条数和当前页数据。
Page<Article> p = (Page<Article>) as;
// 把数据填充到PageBean对象中
pb.setTotal(p.getTotal());
pb.setItems(p.getResult());
return pb;
}
- mapper
List<Article> list(Integer userId, Integer categoryId, String state);
- ArticleMapper.xml (resources->walker-mapper文件下)
<?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="walker.mapper.ArticleMapper">
<!--动态SQL-->
<select id="list" resultType="walker.pojo.Article">
select * from article
<where>
<if test="categoryId!=null">
category_id=#{categoryId}
</if>
<if test="state!=null">
and state=#{state}
</if>
and create_user=#{userId}
</where>
</select>
</mapper>