Mybatis ResultMap 无法继承父resultMap的映射关系

当Mybatis的子ResultMap的type为抽象类时,无法成功继承父ResultMap的映射关系。只有当子ResultMap的type为非抽象类时,继承才有效。在尝试继承抽象类ResultMap导致查询结果为空。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

**

结论: 子resultMap的type不是抽象类的时候才能够成功继承父resultMap的映射关系,否则子resultMap的extends属性写了跟没写一样。。。

**

今天在实现一个贷款功能的时候,需要查询贷款对象,及其聚合的额度条件对象,发现现有的sql没有把额度条件查出来,于是只好自己添加了一个sql,相应的就要加一个resultMap,继承原来的resultMap。

<resultMap id="SubResultMap" type="Loan"  extends="BaseResultMap">
    <association property="amount" resultMap="com.xxx.AmountDao.BaseResultMap"/>
  </resultMap>

写完后运行这个sql相关的方法,报错:

严重: Servlet.service() for servlet [SpringMVC] in context with path [] threw exception [Request processing failed; nested exception is org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.reflection.ReflectionException: Error instantiating class com.glodon.gcf_platform.bo.loan.Loan with invalid types () or values (). Cause: java.lang.InstantiationException] with root cause
java.lang.InstantiationException
    at sun.reflect.InstantiationExceptionConstructorAccessorImpl.newInstance(InstantiationExceptionConstructorAccessorImpl.java:48)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:526)

哦,忘了说,我上面resultMap里的type是个抽象类,但是它父类已经指定了根据不同结果创建不同的具体类的实例

<discriminator javaType="int" column="loan_type">
      <case value="2" resultType="Loan1">
      </case>
      <case value="1" resultType="Loan2"/>
    </discriminator>

于是猜想这个配置难道继承不下来??于是将这个复制了一份到子resultMap中。再次调用方法时不报错了,但是发现,什么都没查出来。。。。
这里写图片描述

最后多次试验发现,子resultMap的type不是抽象类的时候就能够成功继承父resultMap的映射关系。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值