现在大家做电商网站用什么源码,wordpress注册页面插件,哪里查询网站备案,信誉好的郑州网站建设交代一下前言#xff0c;数据是redis中查询 140,193,88,117 格式大概是这样。 需要切割为long类型的list数组。需要手动计算分页#xff0c;去mongodb中查询数据。这里我用的手动计算分页的是 hutool 工具包
import cn.hutool.core.util.PageUtil; 里面挺多实用的工具 …交代一下前言数据是redis中查询 140,193,88,117 格式大概是这样。 需要切割为long类型的list数组。需要手动计算分页去mongodb中查询数据。这里我用的手动计算分页的是 hutool 工具包
import cn.hutool.core.util.PageUtil; 里面挺多实用的工具 dependencygroupIdcn.hutool/groupIdartifactIdhutool-all/artifactId
/dependency int[] ints PageUtil.transToStartEnd(page - 1, pageSize);
传入页码和数据条数计算数据起始位置 将页数和每页条目数转换为开始位置和结束位置 此方法用于包括结束位置的分页方法 例如 页码0每页10 》 [0, 10] 页码1每页10 》 [10, 20] …… 当setFirstPageNo(int)设置为1时 页码1每页10 》 [0, 10] 页码2每页10 》 [10, 20] …… Params: pageNo – 页码从0计数 pageSize – 每页条目数 Returns: 第一个数为开始位置第二个数为结束位置 int[] ints PageUtil.transToStartEnd(page - 1, pageSize);
通过工具返回起始页码。 //根据起点 和 终点 截取到中间的vid 查询ListLong vids split.stream().skip(ints[0]).limit(ints[1]).map(Long::valueOf).collect(Collectors.toList());通过stream 流。搭配分页工具。 实现手动分页。 .map(Long::valueOf) 将string 转为Long 类型
collect(Collectors.toList()); 收集到分页之后的数据。如果起始位置超出list集合的size 不为报错。结束位置超出list的size 不会出错。 但是size为0 。 if (vids.size() 0) { 判断一下。进行下面的步骤。
其实罗里吧嗦一大堆代码就两行。 // 将页数和每页条目数转换为开始位置和结束位置 此方法用于包括结束位置的分页方法 例如 页码0每页10 》 [0, 10]int[] ints PageUtil.transToStartEnd(page - 1, pageSize);//根据起点 和 终点 截取到中间的vid 查询ListLong vids split.stream().skip(ints[0]).limit(ints[1]).map(Long::valueOf).collect(Collectors.toList());这里放一下这个方法的全部代码吧。 /*** 分页查询小视频列表按照时间倒序排序 优先查询推荐的视频如果没有推荐的视频或已经查询完成。再查询默认的** param userId 用户id* param page 第几页* param pageSize 每页几条* return PageInfoVideo*/Overridepublic PageInfoVideo queryVideoList(Long userId, Integer page, Integer pageSize) {//返回的结果集PageInfoVideo pageInfo new PageInfo();pageInfo.setPageNum(page);pageInfo.setPageSize(pageSize);//小视频推荐 redis keyString redisKey RedisKeyUtils.getVIDEOKEY(userId);//redis推荐视频vid 140,193,88,117, vidString redisValue redisTemplate.opsForValue().get(redisKey);//如果redis中推荐的视频id不为空int recommendCount 0;//如果redis 推荐视频不为空if (StringUtils.isNotEmpty(redisValue)) {//分割keyListString split StrUtil.split(redisValue, ,);//用于查找默认视频时跳过的页数计算recommendCount split.size();// 将页数和每页条目数转换为开始位置和结束位置 此方法用于包括结束位置的分页方法 例如 页码0每页10 》 [0, 10]int[] ints PageUtil.transToStartEnd(page - 1, pageSize);//根据起点 和 终点 截取到中间的vid 查询ListLong vids split.stream().skip(ints[0]).limit(ints[1]).map(Long::valueOf).collect(Collectors.toList());//如果推荐视频vid 不为空查询推荐视频if (vids.size() 0) {Query query Query.query(Criteria.where(vid).in(vids));ListVideo videos mongoTemplate.find(query, Video.class);pageInfo.setRecords(videos);return pageInfo;}}//解决为了让默认视频从0开始如果之前推荐视频已经刷到第四页。这里需要减去4包装从0页往下查询int totalPage PageUtil.totalPage(recommendCount, pageSize);//如果推荐视频为空或查询完毕查询返回默认的视频列表PageRequest pageRequest PageRequest.of(page - totalPage - 1, pageSize,Sort.by(Sort.Order.desc(created)));Query query new Query();query.with(pageRequest);ListVideo videos mongoTemplate.find(query, Video.class);pageInfo.setRecords(videos);return pageInfo;}