管理后台的列表分页和APP/小程序的列表分页

概述

APP/小程序的列表分页,前端传你page,你传给前端isEnd和list。

管理后台的列表分页,前端传你page,你传给前端list、total和pageSize。

分页计算公式:第n页的第一条数据是start = (n - 1) * size,最后一条是n * size-1。

Post类
package com.post.module.entity;

import lombok.Data;
import lombok.experimental.Accessors;
import java.math.BigInteger;

/**
 * post
 * @author 
 */
@Data
@Accessors(chain = true)
public class Post{
    private BigInteger id;

    private BigInteger areaId;

    /**
     * 标题
     */
    private String title;

    /**
     * 头像
     */
    private String headImage;

    /**
     * 用户名
     */
    private String userName;


    /**
     * 关注数
     */
    private Integer attentionCount;

    /**
     * 内容图片
     */
    private String contentImages;

    private Integer createTime;

    private Integer updateTime;

    private Integer isDeleted;

    /**
     * 内容
     */
    private String content;

}
PostMapper
 /**
     * 分页
     *
     * @param title
     * @return
     */
    List<Post> findPostByPage(@Param("title") String title, @Param("offset") Integer offset,
                              @Param("pageSize") Integer pageSize,@Param("ids") String ids);
    Integer total(@Param("title") String title);
PostService
 public List<Post> findPostByPage(String title, Integer page, Integer pageSize , String areaName) {
        int offset = (page - 1) * pageSize;
        List<String> areaIds = areaMapper.findAreaIds(areaName);
        StringBuilder sb = new StringBuilder();
        for (String id:areaIds) {
            sb.append(id + ",");
        }
        sb.deleteCharAt(sb.lastIndexOf(","));

        List<Post> postList = postMapper.findPostByPage(title, offset, pageSize,sb.toString());
        return postList;
    }
xml
<select id="findPostList" parameterType="java.lang.String" resultType="com.post.module.entity.Post">
         select * from post
        <where>
            <if test="title != null and title != ''">
                title like concat('%',#{title},'%')
            </if>
                  and is_deleted = 0
        </where>
    </select>

    <select id="findPostByPage" resultType="com.post.module.entity.Post">
        select * from post
        <where>
            <if test="title != null and title != ''">
                title like concat('%',#{title},'%')
                OR area_id in (${ids}) and is_deleted = 0
            </if>
        </where>
        limit #{offset},#{pageSize}
    </select>

    <select id="total" parameterType="java.lang.String" resultType="java.lang.Integer">
        select COUNT(*) from post
        <where>
            <if test="title != null and title != ''">
                title like concat('%',#{title},'%') and is_deleted = 0
            </if>
            OR area_id in (${ids})
        </where>
    </select>
controller
 /**
     * 帖子列表页
     *
     * @param
     * @return
     */
    @RequestMapping("/post/list")
    public PostPageVo findPostByPage(@RequestParam(value = "title", required = false) String title,
                                     @RequestParam(value = "areaName", required = false) String areaName,
                                     @RequestParam(value = "page") Integer page) {
        final int pageSize = 2;
        List<Post> postList = postService.findPostByPage(title, page, pageSize,areaName);

        Integer total = postService.total(title);

        List<PostListVo> postVoList = new ArrayList<>();
        PostPageVo postPageVo = new PostPageVo();

        for (Post post : postList) {
            PostListVo postListVo = new PostListVo();

            BigInteger areaId = post.getAreaId();
            Area area = areaService.getById(areaId);

            postListVo.setId(post.getId())
                    .setTitle(post.getTitle())
                    .setHeadImage(post.getHeadImage())
                    .setAttentionCount(post.getAttentionCount())
                    .setContent(post.getContent())
                    .setContentImage(post.getContentImages().split("\\$")[0])
                    .setCreateTime(Util.transForDate(post.getCreateTime()))
                    .setUpdateTime(Util.transForDate(post.getUpdateTime()))
                    .setIsDeleted(post.getIsDeleted())
                    .setName(area.getName());
            postVoList.add(postListVo);
        }
        postPageVo.setPageSize(pageSize)
                .setTotal(total)
                .setPostList(postVoList);
        return postPageVo;
    }
 /**
     * 根据title做查询
     *
     * @param wp
     * @return
     */
    @RequestMapping("/post/list")
    public PostPageVo findPostByPage(@RequestParam(value = "wp", required = false) String wp,
                                     @RequestParam(value = "areaName", required = false) String areaName) {
        final int pageSize = 2;
        PostPageVo postPageVo = new PostPageVo();
List<Post> postList = postService.findPostByPage(title, page, pageSize,areaName);
        boolean isEnd =  postList.size()<pageSize ? true : false;


        List<PostListVo> postVoList = new ArrayList<>();

        for (Post post : postList) {
            PostListVo postListVo = new PostListVo();
            BigInteger areaId = post.getAreaId();
            Area area = areaService.getById(areaId);

            if (area == null){
                continue;
            }
            postListVo.setTitle(post.getTitle())
                    .setHeadImage(post.getHeadImage())
                    .setAttentionCount(post.getAttentionCount())
                    .setContent(post.getContent())
                    .setName(area.getName())
                    .setContentImage(post.getContentImages().split("\\$")[0]);
            postVoList.add(postListVo);
        }
            postPageVo.setIsEnd(isEnd)
                    .setPostList(postVoList);
        return postPageVo;
    }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值