zoukankan      html  css  js  c++  java
  • openFeign远程调用时使用Mybatis-plus的IPage接口进行返回分页数据失败的记录

    openFeign远程调用时使用Mybatis-plus的IPage接口进行返回分页数据失败的记录

    1. 问题描述

    前置条件:

    1. 使用openFeign+mybatis-plus
    2. 使用json格式进行数据的传输,即限制web传输的数据格式为 content-type = application/json

    问题:

    1. 微服务A 通过 openFeign 调用微服务B 的接口时返回数据为 null

    2. 直接调用微服务B的接口,返回数据正常

    2. 问题解决过程

    1. 首先在微服务B中查看该接口返回的数据,是否正常

    结果:

    1. 有数据进行返回

    2. 对数据进行打印时显示为对象地址,而非期望的json字符串

    2. 试图修改返回的Object,改为Object.toString()

    结果:

    打印出的数据仍为对象地址

    3. 试图修改返回的Object,将其进行Json序列化,即改为JSONObject.toJSON(data),进行返回

    结果:

    打印的数据为期望的的json字符串,但如此改动十分不友好,不利于后续的开发,而且需要修改方法的返回类型,故放弃

    4. 进一步分析发现,mybatis-plus中的IPage接口虽然实现了Serializable接口,但未实现Json序列化

    解决方案:

    • 自定义一个Page类,继承IPage接口的实现类Page,实现Json序列化即可

    实现:

    public class SerializableForFastJsonPage<T> extends Page<T> {
        @Override
        public String toString() {
            return JSONObject.toJSONString(this);// 实现json序列化
        }
    
    }
    

    结果:

    使用SerializableForFastJsonPage类替换IPage类,即可实现json序列化数据进行返回

    5. 注意:在接收方进行反序列化的时候,需要指定具体的接收的数据类型,不可使用泛型,使用泛型会导致接收不到数据

  • 相关阅读:
    程序的链接
    Graphviz 画图的一些总结
    C表达式中的汇编指令
    epoll(2) 源码分析
    epoll(2) 使用及源码分析的引子
    eventfd(2) 结合 select(2) 源码分析
    poll(2) 源码分析
    select 源码分析
    kfifo
    程序的机器级表示:寻址方式、指令及栈的运行机制
  • 原文地址:https://www.cnblogs.com/strive-for-life/p/13880295.html
Copyright © 2011-2022 走看看