豪语龙 發表於 2020-6-11 11:26:00

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 &lt;= 0) {<br>    pageNum = 1;<br>}<br>Integer pageSize = request.getPageSize();<br>if (pageSize == null || pageSize &lt;= 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&lt;RedChip&gt; redChips = mongoTemplate.find(query, RedChip.class);<br></em></pre>
<pre>// 转换vo<br>List&lt;ChipListVO&gt; 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()) &amp;&amp; 1 == item.getActiveRelatedStatus()){<br>      item.setPacketTitle("("+item.getBatchCode()+")");<br>    }<br>}<br>Page&lt;ChipListVO&gt; page = new Page&lt;&gt;();<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&lt;T&gt; extends BasePageParam {<br>    //总页数<br>    private long totalPage;<br><br>    //总记录数<br>    private long totalCount;<br><br>    //每页显示集合<br>    private List&lt;T&gt; rows;<br>}</pre>
<pre><br><br><br><br></pre>
<pre><em id="__mceDel">&nbsp;</em></pre><br><br>
来源:https://www.cnblogs.com/guangxiang/p/13092137.html
頁: [1]
查看完整版本: java使用mongodb分页查询案例