探案:其它配置|参数无错,罪魁祸首是它----使用lombok包Builder注解引起MyBatisSystemException

案件回顾:

场景:实现某查询功能。

详情具体如下:

注意⚠️⚠️
org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.executor.result.ResultMapException: Error attempting to get column 'xxx' from result set.  Cause: java.lang.NumberFormatException: For input string: "xxx"
报错代码:
 org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.executor.result.ResultMapException: Error attempting to get column 'account_id' from result set.  Cause: java.lang.NumberFormatException: For input string: "0a059b05-d63c-4782-b981-836ea9e6beb9"
	at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:96)
	at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:441)
	at com.sun.proxy.$Proxy86.selectList(Unknown Source)
	at org.mybatis.spring.SqlSessionTemplate.selectList(SqlSessionTemplate.java:224)
	at org.apache.ibatis.binding.MapperMethod.executeForMany(MapperMethod.java:147)
	at org.apache.ibatis.binding.MapperMethod.execute(MapperMethod.java:80)
	at org.apache.ibatis.binding.MapperProxy$PlainMethodInvoker.invoke(MapperProxy.java:145)
	at org.apache.ibatis.binding.MapperProxy.invoke(MapperProxy.java:86)
	at com.sun.proxy.$Proxy135.blockchainTradeTransactionList(Unknown Source)
    ........

@Builder主要是利用建造者模式来构建对象,设置参数值时能够更加直接明了

import lombok.Builder;


@Builder
@Schema(description = "区块链交易流水")
public class BlockchainTradeTransactionDO {
    @Schema(description = "A UUID")
    private String id;

    private Integer clientId;
    
    ........
}

案情分析:

排查:
1、首先确认数据库中列和Java实体参数数据类型是否一致
2、检查mybatis映射文件,确保resuleMap或实体类中,数据库字段是否正确映射Java类型
3、日志调试,开启日志调试,可更详细查看执行的SQL语句与参数。
以上排查,并未发现问题。

小小的脑袋发出大大的问好❓❓❓

又冷静下来,想想~~
排查注解使用@Builder,它会默认帮我们实现Getter和Setter等方法,通过骚操作反编译MemberPointChange等类,我发现使用@Builder注解,Lombok只会生成有参构造器,而不会生成无参构造器,并且遇到十六进制字符串格式转换时,易出现异常。

所以果断舍弃@Builder,手动创建新对象。

解决方案:

不使用@Builder注解

有些问题往往出现在我们意想不到的惯性思维当中,认为它没问题,结果它又问题。

posted @ 2024-07-04 11:58  手可敲星辰脚驾七彩云  阅读(13)  评论(0编辑  收藏  举报