关于mybatis映射结果 java.lang.IllegalArgumentException: argument type mismatch 的错误记录及解决

文章详细记录了在使用MyBatis时遇到的java.lang.IllegalArgumentException:argumenttypemismatch错误,原因是类缺少无参构造函数。解决方案是添加无参构造函数,以确保对象能正确实例化。文章强调了基础的重要性,建议在定义Java类时总是提供无参构造方法。
摘要由CSDN通过智能技术生成

关于mybatis映射结果 java.lang.IllegalArgumentException: argument type mismatch 的错误记录及解决

完整报错如下:
org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.reflection.ReflectionException: Error instantiating class com.jeoho.module.appro.domain.ApproUser with invalid types (SysUser) or values (1636192244241887234). Cause: java.lang.IllegalArgumentException: argument type mismatch

approUser是SysUser的中间对象,将数据库表sys_user中的数据查出映射到approUser对象中
在这里插入图片描述

在这里插入图片描述
查询报如上错误

原因
写了一个有参构造,而没把无参构造补上,映射的时候首先会创建对象,因此出现异常

解决
补上无参构造函数

如果一个 Java 类没有定义无参构造方法,那么在使用该类时,可能会出现以下几种情况:
1.如果该类没有定义任何构造方法,则编译器会自动为其生成一个默认的无参构造方法,这个构造方法会调用父类的无参构造方法。因此,即使没有显式定义无参构造方法,该类也可以正常实例化和使用。
2.如果该类定义了其他有参构造方法,但没有定义无参构造方法,那么在实例化该类的时候,如果没有指定参数,就会编译错误。因为在创建对象的时候,Java 编译器会先去查找是否有无参构造方法可用,如果没有,就会抛出编译错误。
3.如果该类被其他类继承,而子类中没有显式调用父类的构造方法或者调用了父类的构造方法但是没有匹配的构造方法可用,则在编译或者运行时会报错。
因此,一般来说,建议在定义 Java 类时,无论是否需要,都显式地定义一个无参构造方法,以保证类的实例化和继承的正常使用。如果需要定义其他的构造方法,可以在其中调用无参构造方法来初始化类的状态。

基本功还是很重要,不然碰到这种bug还一头雾水。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值