spring feign page Pageable 分页查询

问题概述:使用springcloud feign 微服务间调用时,返回page对象时,出现Page(缺少默认构造方法)实例化错误,

github上该问题好像已经解决【https://github.com/spring-cloud/spring-cloud-netflix/issues/556】



A项目中方法
@PostMapping("/users")
@Timed
public ResponseEntity<Page<UserDTO>> abilities(@RequestBody QueryDTO query, @ApiParam Pageable pageable) {
    log.debug("REST request to get a page of Users");

    Page<UserDTO> page = userService.findAll(query, pageable);

    return ResponseEntity.ok(page);
}

B项目中调用A项目方法(pageable => page & size,自定义PageFeign.class用来接收返回的Page对象)

@RequestMapping(value = "/api/users", method = RequestMethod.POST)

PageFeign<UserDTO> users(@RequestBody QueryDTO query, @RequestParam("page") int page, @RequestParam("size") int size);

public class PageFeign<T> implements Iterable<T>, Serializable {
    
private static final long serialVersionUID = 1L;

private List<T> content = new ArrayList<>();
private boolean last;
private int totalPages;
private int totalElements;
private int numberOfElements;
private int size;
private int number;
private Pageable pageable;

public PageFeign() {
}

public List<T> getContent() {
    return content;
}

public void setContent(List<T> content) {
    this.content = content;
}

public boolean isLast() {
    return last;
}

public void setLast(boolean last) {
    this.last = last;
}

public int getTotalPages() {
    return totalPages;
}

public void setTotalPages(int totalPages) {
    this.totalPages = totalPages;
}

public int getTotalElements() {
    return totalElements;
}

public void setTotalElements(int totalElements) {
    this.totalElements = totalElements;
}

public int getNumberOfElements() {
    return numberOfElements;
}

public void setNumberOfElements(int numberOfElements) {
    this.numberOfElements = numberOfElements;
}

public int getSize() {
    return size;
}

public void setSize(int size) {
    this.size = size;
}

public int getNumber() {
    return number;
}

public void setNumber(int number) {
    this.number = number;
}

public Pageable getPageable() {
    return new PageRequest(number,size);
}

}

    /** PageUtil.class 用来转换对象 **/ PageFeign -> Page

public static <T> Page<T> localPageToSpringPage(PageFeign<T> page) {
    return new PageImpl(page.getContent(), page.getPageable(), page.getTotalElements());
}



  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值