记一次mybatis返回类型为内部类时的问题

记一次mybatis返回类型为内部类时的问题

<select id="countCreateAndEnd" resultType="com.wafa.model.OperaOrderNum$TodayNum">
</select>

tip:此处使用内部类需要用 代 替 . 这 是 我 写 的 m a p p e r , 里 边 用 到 了 O p e r a O r d e r N u m 代替. 这是我写的mapper,里边用到了OperaOrderNum .mapper,OperaOrderNumTodayNum这个内部类

@Data
public class OperaOrderNum {

    private TodayNum repair;
    private TodayNum replaceLx;
    
    @Data
	public class TodayNum {
	    private Integer createNum;
	    private Integer endNum;
	}
}

这是我定义内部类的地方;
然后在运行项目,执行查询是报错了,nosuchmethodexception:.(),这个异常意思是这个内部类没有默认无参构造, 结合上图,这必然是指其他原因.

因为mybatis是用的反射, 既然反射新建对象时会报错 ,那直接new调用无参构造会怎样?
我尝试用new实例这个内部类对象时,idea提示我需要把这个类设置为static静态内部类


把内部类改为静态后,mybatis也可以正常使用它了. 那为什么必须是静态内部类才能被反射或new出来呢? 我查了一下,有个解释比较合理,参考一下:

创建非静态内部类对象时,一定要先创建起相应的外部类对象。不能直接创建.所以也就是说不能直接创建.要想在外部能直接创建,就用静态的内部类

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值