文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Mapper类中存在名称相同的方法重载报错问题

2023-05-14 05:23

关注

Mapper类中存在名称相同的方法重载报错

项目场景

官网项目开发

问题描述

Mapper类中存在名称相同的方法重载报错

为了省事,直接在mapper层通过@select@update等注解形式写sql (此时大都是单表查询没有创建mapper.xml文件)代码如下:

    @Update("")
    void updateSortBySort(Integer newSort, Integer platform, Integer classification);
    @Update("")
    void updateSortBySort(Integer oldSort, Integer newSort, Integer platform, Integer classification);

此时可以正常使用

接下来因为业务原因,需要进行多表查询,仅使用mybatis自带的不行,需要使用mapper.xml文件写sql脚本,进行多表查询

    @Update("")
    void updateSortBySort(Integer newSort, Integer platform, Integer classification);
    @Update("")
    void updateSortBySort(Integer oldSort, Integer newSort, Integer platform, Integer classification);
    IPage<List<ProductVo>> getlistPage(IPage<ProductVo> page,
                                              @Param("Param1")Integer Param1,
                                              @Param("Param2")Integer Param2);

此时调用第一个updateSortBySort方法的接口,会报一个“Parameter ‘oldSort’ not found 就是参数不存在的错误”

原因分析

找到了原因:在使用@Select等注解的情况下,方法名即为mapper的id,id相同。重载的方法会报这个错

假如项目启动时候通过反射获取mapper方法数组顺序先是在第一个

此时调用方法,正常,不会有问题;

因为mybatis查找mapper内的方法是靠方法名,和参数无关。方法名就是mapper.xml里面的id一样

当不进行方法的重载时,即:每个方法都有唯一的命名时,在xml中进行映射后,就可以执行,不会出现异常。

所以mybatis中mapper.xml是不会准确映射到Java中的重载方法的。最好不要在mapper接口中使用方法重载。

方法重载和方法重写的区别

方法的重载的规则

重载就是在一个类中,有相同的函数名称,但形参不同的函数

方法名相同时,编译器会根据调用方法的参数个数、参数类型等去逐个匹配,以选择对应的方法,如果匹配失败,则编译器报错

方法的重写

重写:子类的方法和父类必须一致,方法体可以不同。需要有继承关系,子类重写父类方法

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     801人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     348人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     311人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     432人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     220人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯