vbliker 2023-01-31 16:42 采纳率: 83.3%
浏览 117
已结题

Java 关于 controller 用 map 接收值 的问题

今天看 MyBatis-Plus 看到有一句话不明白:

不支持以及不赞成在 RPC 调用中把 Wrapper 进行传输
wrapper 很重
传输 wrapper 可以类比为你的 controller 用 map 接收值(开发一时爽,维护火葬场)

1、不理解 传输wrapper 是什么东西
2、为什么用 map 接收 json 会出问题

3、我这样写有什么隐患吗

    @GetMapping
    public static Map<String, String> getList() {
        Map<String, String> map = new ConcurrentHashMap<>();
        map.put("CDN", createLine("yesno", "CDN网站","").toString());
        map.put("模块", createLine("dropdown", "","php,iis").toString());
        map.put("web配额", createLine("text", "MB","").toString());
        return map;
    }

    /**
     * 用于构建 “Value”
     */
    private static List<String> createLine(String type, String description, String options) {
        List<String> ansList = new ArrayList<>();
        if (!type.isEmpty())  ansList.add("Type = " + type);
        if (!description.isEmpty()) ansList.add("Description = " + description);
        if (!options.isEmpty()) ansList.add("Options = " + options);
        return ansList;
    }

输出结果如下:

{
    "连接数": "[Type = text]",
    "FTP": "[Type = yesno, Description = 是否允许ftp]",
    "附加参数": "[Type = text]"
}

  • 写回答

2条回答 默认 最新

  • 小飞LOVE霞 2023-01-31 17:16
    关注

    1、RPC是远程过程调用,也就是说http协议中的数据体,在加了wrapper之后会变大,占用带宽。
    2、● JavaBean的数据在编译期就会对其进行校验,如果出错会直接提示。而Map的数据则需要到sql层才会进行处理检验。因此如果map的参数名称写错、参数值如果多传乱传只能到sql层才会被发现。
    ● Map中所拥有的参数个数、类型、每个参数代表的含义对外不透明,团队开发及后期维护难度大
    3、

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 3月30日
  • 已采纳回答 3月22日
  • 创建了问题 1月31日

悬赏问题

  • ¥20 用HslCommunication 连接欧姆龙 plc有时会连接失败。报异常为“未知错误”
  • ¥15 网络设备配置与管理这个该怎么弄
  • ¥20 机器学习能否像多层线性模型一样处理嵌套数据
  • ¥20 西门子S7-Graph,S7-300,梯形图
  • ¥50 用易语言http 访问不了网页
  • ¥50 safari浏览器fetch提交数据后数据丢失问题
  • ¥15 matlab不知道怎么改,求解答!!
  • ¥15 永磁直线电机的电流环pi调不出来
  • ¥15 用stata实现聚类的代码
  • ¥15 请问paddlehub能支持移动端开发吗?在Android studio上该如何部署?