java使用mongodb分页查询案例
<pre></pre><pre>@Override<br>public Response chipListByPage(ChipPageListParam request) {</pre>
<pre>//查询条件</pre>
<pre>Query query = new Query();<br>Criteria criteria = new Criteria();</pre>
<pre>if (StringUtils.isNotBlank(request.getTitleLike())) {<br> Pattern pattern = Pattern.compile("^.*" + request.getTitleLike() + ".*$", Pattern.CASE_INSENSITIVE);<br> criteria = criteria.and("chipName").regex(pattern);<br>}<br>if (StringUtils.isNotBlank(request.getPartnersId())) {<br> criteria = criteria.and("partnersId").is(request.getPartnersId());<br>}</pre>
<pre>Integer pageNum = request.getPageNum();<br>if (pageNum == null || pageNum <= 0) {<br> pageNum = 1;<br>}<br>Integer pageSize = request.getPageSize();<br>if (pageSize == null || pageSize <= 0) {<br> pageSize = 10;<br>}</pre>
<pre><br>//mongodb分页查询核心代码</pre>
<pre>Query countQuery = new Query(criteria);</pre>
<pre><em>long totalCount = mongoTemplate.count(countQuery, RedChip.class);<br>query = query.limit(pageSize).skip((pageNum - 1) * pageSize);<br>query = query.addCriteria(criteria);<br>query = query.with(Sort.by(Sort.Order.desc("createTime")));<br>List<RedChip> redChips = mongoTemplate.find(query, RedChip.class);<br></em></pre>
<pre>// 转换vo<br>List<ChipListVO> chipListVOS = JSON.parseArray(JSON.toJSONString(redChips), ChipListVO.class);<br>for (ChipListVO item: chipListVOS<br> ) {<br> if(StringUtils.isBlank(item.getBatchCode())|| Objects.isNull(item.getSuitPlatformId())|| Objects.isNull(item.getActiveRelatedStatus()))<br> continue;<br> if(item.getSuitPlatformId().equals(RedChipDetailSuitEnum.LiZan.getValue()) && 1 == item.getActiveRelatedStatus()){<br> item.setPacketTitle("("+item.getBatchCode()+")");<br> }<br>}<br>Page<ChipListVO> page = new Page<>();<br>page.setRows(chipListVOS);<br>page.setTotalCount(totalCount);<br>BigDecimal totalPage = new BigDecimal(totalCount);<br>totalPage = totalPage.divide(new BigDecimal(request.getPageSize()), RoundingMode.CEILING);<br>page.setTotalPage(totalPage.longValue());<br>page.setPageNum(pageNum);<br>page.setPageSize(pageSize);<br>return Response.success(page);<br>}<br><br><br>//分页类</pre>
<pre>@ApiModel(value = "分页参数")<br>@Data<br>public class BasePageParam implements Serializable {<br> /**<br> * 当前页页码<br> */<br> @ApiModelProperty(value = "当前页页码")<br> @NotNull(message = "缺少分页参数: pageNum")<br> @Min(value = 1)<br> private Integer pageNum;<br> /**<br> * 每页记录数<br> */<br> @ApiModelProperty(value = "每页记录数")<br> @NotNull(message = "缺少分页参数: pageSize")<br> @Min(value = 1)<br> private Integer pageSize;<br>}</pre>
<pre>/**<br> * 分页类<br> */<br>@Getter<br>@Setter<br>public class Page<T> extends BasePageParam {<br> //总页数<br> private long totalPage;<br><br> //总记录数<br> private long totalCount;<br><br> //每页显示集合<br> private List<T> rows;<br>}</pre>
<pre><br><br><br><br></pre>
<pre><em id="__mceDel"> </em></pre><br><br>
来源:https://www.cnblogs.com/guangxiang/p/13092137.html
頁:
[1]