lombok使用@Builder注解导致MybatisPlus结果集映射异常

如果JavaBean类使用@Builder注解,则默认只生成AllArgsConstructor构造器。

如果一个JavaBean只有AllArgsConstructor构造器,那么MybatisPlus在进行结果集映射时,Bean的属性类型,会根据映射顺序进行判断,而不是根据属性名进行判断,因此导致了映射异常。


    com.baomidou
    mybatis-plus-boot-starter
    3.4.3.4




    org.projectlombok
    lombok
    1.18.24

效果图:

1、只使用@Builder或只使用@AllArgsConstructor的错误:

lombok使用@Builder注解导致MybatisPlus结果集映射异常_第1张图片

Caused by: org.apache.ibatis.executor.result.ResultMapException: 
    Error attempting to get column 'user_agent' from result set.  
    Cause: java.lang.IllegalArgumentException: 
        No enum constant com.talkweb.idaas.log.enums.LoginStatusEnum.Mozilla/5.0 xxxx(user_agent的值被映射成LoginStatusEnum类型)

2、只使用@Builder和@NoArgsConstructor的错误

lombok使用@Builder注解导致MybatisPlus结果集映射异常_第2张图片

3、MybatisPlus原理图:

org\apache\ibatis\executor\resultset\DefaultResultSetHandler.class

lombok使用@Builder注解导致MybatisPlus结果集映射异常_第3张图片

 lombok使用@Builder注解导致MybatisPlus结果集映射异常_第4张图片

你可能感兴趣的:(Java基础,java,mysql,开发语言)