wowowowowq 2023-01-09 10:27 采纳率: 100%
浏览 31
已结题

java中mybatis返回bean有继承时属性赋值的问题

问题遇到的现象和发生背景

项目中有个beanA,继承了beanB,A中有个字段是Code,B中有个字段是code,都有各自对应的get、set方法,其中A中Code是private修饰,B中code是public修饰,A无注解,B有@Component注解。

遇到的现象和发生背景,请写出第一个错误信息

mybatis中写的sql是select code from xxx,返回结果是beanA,结果debug发现,A.getCode为null,对象中code是有值的。

我的解答思路和尝试过的方法

已知mybatis中返回结果不区分大小写。
我开始认为是字段编译顺序问题,c在C前,所以先给code赋值。但是后来写了个测试类验证,测试类中是Code有值,跟现状正好相反,测试场景跟项目中唯一区别是测试的父类没有加@Component注解。
请解惑,这是什么原理?

  • 写回答

1条回答 默认 最新

  • zcl_1991 2023-01-09 10:41
    关注

    问题描述得很清晰,但是应该是还有什么你没注意到的细节没有说到,按你描述理论上应该不会这样的;
    首先跟@Component注解没关系;
    mybatis映射调用的是对象.setCode();但实际上你A是setCode(),B也是setCode(),属性不同名,set方法同名了,这样应该是A有值,B为null

    本回答被专家选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 1月20日
  • 专家已采纳回答 1月12日
  • 创建了问题 1月9日