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()生成的实例来调用内部类.所以可以通过这种方法实现.

阅读 9.2k
1 个回答

用静态内部类可以实现,不过这样用也没啥意义

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏