【SpringBoot实战】文章列表|条件分页接口

Spring HOME

3.2 文章列表(条件分页)

3.2.1 基本信息

请求路径:/article

请求方式:GET

接口描述:该接口用于根据条件查询文章,带分页

3.2.2 请求参数

请求参数格式:queryString

请求参数说明:

参数名称说明类型是否必须备注
pageNum当前页码number
pageSize每页条数number
categoryId文章分类IDnumber
state发布状态string已发布 | 草稿

请求数据样例:

pageNum=1&pageSize=3&categoryId=2&state=草稿
3.2.3 响应数据

响应数据类型:application/json

响应参数说明:

名称类型是否必须默认值备注其他信息
codenumber必须响应码, 0-成功,1-失败
messagestring非必须提示信息
dataobject必须返回的数据
|-totalnumber必须总记录数
|-itemsarray必须数据列表
|-idnumber非必须主键ID
|-titlestring非必须文章标题
|-contentstring非必须文章正文
|-coverImgstring非必须文章封面图像地址
|-statestring非必须发布状态已发布|草稿
|-categoryIdnumber非必须文章分类ID
|-createTimestring非必须创建时间
|-updateTimestring非必须更新时间

响应数据样例:

{
    "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>
  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值