猿问

mybatis支持返回内部类吗?如果是,该如何实现?

1.定义了一个内部类

class Outer{
    private String name;
    
    class Inner{
        private Integer min;
        private Integer max;
    }
    
    getter...
    setter...
}

2.mybatis实现了对应内部类的resultMap

<resultMap id="range" type="com.cheng.test.Outer$Inner">
        <result column="min_id" property="min" jdbcType="INTEGER" />
        <result column="max_id" property="max" jdbcType="INTEGER" />
    </resultMap>
   

3.最后的结果报异常:

org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.executor.ExecutorException: No constructor found in com.cheng.test.Outer$Inner matching [java.lang.Integer, java.lang.Integer]

4.报的异常是说我缺少构造函数,但是定义类内部类的构造函数也没用.Outer类里,写Inner构造函数会提示错误.请问是哪里有问题?

以上是原问题.

根据jpmonty的答案我实现成功了,就是增加了一个静态声明就解决了. 在mybatis中调用内部类要用$符号,这也是网上查到的,但是没有说明需要使用静态内部类.
至于原因,我的猜测是,静态内部类能直接调用new Inner(),而内部类却只能通过new Outer()生成的实例来调用内部类.所以可以通过这种方法实现.

鸿蒙传说
浏览 823回答 1
1回答

德玛西亚99

用静态内部类可以实现,不过这样用也没啥意义
随时随地看视频慕课网APP

相关分类

Java
我要回答