mybatis plus argument type mismatch

异常信息

  项目中使用了mybatis-plus,一个功能,昨天还使用的好好的,今天突然就不能用了,控制台还报错 argument type mismatch

java.lang.illegalArgumentException:argument type mismatchorg.mybatis.spring.MyBatisSystemException:netsted exception is org.apache.ibatis.reflection.ReflectionException:Error instantiating class com.xxx.WithdrawEntity with invalid type(Builder) or values(3) , Cause:java.lang.IllegalArgumentException:argument type mismatch

问题分析

  其中 WithdrawEntity 是我们自己定义的实体类,Builder 就不知道是什么鬼了

  然后,去谷歌一下,发现说的都是 字段类型和实际类型不匹配,比如java.util.Date 错误引了java.sql.Date;或者是没加字段注解什么的。这些我都检查了下,都不符合,并且昨天还是好好的,怎么今天就不ok了?

  想了想,感觉报错信息里的 Builder 很奇怪啊,这个难道是谁加上去的吗?查了下git提交记录,发现,真的是有人提交上去的,不仅提交上去了,还改了实体类的构造方法!

  旧代码:   

public class WithdrawEntity{
   private Integer id;
   private String name;
   ......
   set/get
}

  新代码:   

public class WithdrawEntity{
   private Integer id;
   private String name;
   ......
   set/get
   
   public WithdrawEntity(Builder builder){
     this.id = builder.id;
     this.name = builder.name;
   }
   
   public static class Builder{
     private Integer id;
     private String name;
     ......
     set/get
   }
}

  这么一对比,就明了了。新代码设置了构造方法,mybatis-plus在查询出数据,组装WithdrawEntity的时候,抛异常了。因为WithdrawEntity只有一个构造方法,并且需要提供Builder参数,mybatis-plus无法提供

builder,最终导致实例化失败。

  问题总结:

  1. 碰到异常,不要惯性的直接去谷歌

  其实mybatis-plus的报错信息已经说的非常明白了   

Error instantiating class com.xxx.WithdrawEntity with invalid type(Builder) 

  然而,我还是惯性思维,碰到报错就谷歌,ε=(´ο`*)))唉 得改啊

  2.实体类里不要做任何逻辑操作

  重申再重申,实体类里不要做任何逻辑操作

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值