一般时候来讲mybatis进行结果集映射是通过无参构造实例化,在通过set方法进行注入。
如果JavaBean类使用@Builder注解,则默认只生成AllArgsConstructor构造器。
如果一个JavaBean只有AllArgsConstructor构造器,那么Mybatis在进行结果集映射时会使用另一种映射方式,Bean的属性类型,会根据映射顺序进行判断,而不是根据属性名进行判断,因此导致了映射异常。
如上面这个异常一样,本来字段类型是匹配的,但因为会根据映射顺序进行判断,所以将BigDecimal类型的数据赋值给String类型了,将会抛出异常。
解决办法:
不使用@Builder注解
添加@NoArgsConstructor和@AllArgsConstructor注解