项目中有个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注解。
请大牛解答,这是什么原理?
一般不建议这种写法,既然有了继承,就利用继承的特性,把重复的属性放到一个类中,符合oop的设计思想。