踩坑纪录——Lombok加Builder注解后mybatis无法识别字段正确类型
一、问题描述
1 @Data 2 @EqualsAndHashCode(callSuper = true) 3 4 @Builder 5 6 @TableName("company_user") 7 8 public class CompanyUserPO extends SuperEntity { 9 10 /** 11 12 * 企业ID 13 14 */ 15 16 private String companyId; 17 18 /** 19 20 * 是否删除,1为删除,0为未删除 21 22 */ 23 24 private int deleteFlag; 25 26 // ...省略部分代码... 27 28 } 29 30 31 public interface CompanyUserMapper extends BaseMapper<CompanyUserPO> { 32 33 } 34 35 private void checkIfRegistered(String phone) { 36 37 QueryWrapper<CompanyUserPO> queryCompanyUser = new QueryWrapper<>(); 38 39 queryCompanyUser.eq("delete_flag", 0); 40 41 queryCompanyUser.eq("phone_number", phone); 42 43 CompanyUserPO existCompanyUser = companyUserMapper.selectOne(queryCompanyUser); 44 45 // ...省略部分代码... 46 47 }
在selectOne的时候报错:
nested exception is com.mysql.jdbc.exceptions.jdbc4.MySQLDataException: '1.24552615981764198E18' in column '4' is outside valid range for the datatype INTEGER.
二、问题发现
直接在字段上加上@TableField(typeHandler = StringTypeHandler.class, jdbcType = JdbcType.VARCHAR)或者配置mapper.xml文件都报同样的错误,排除是mybatis plus的问题。注释掉实体类上的@Builder后发现错误消失,确定是Lombok插件的问题。
三、问题解决
去掉实体类上的@Builder注解或者再添加上@AllArgsConstructor和@NoArgsConstructor两个注解。
本博客文章皆出于学习目的,个人总结或摘抄整理自网络。引用参考部分在文章中都有原文链接,如疏忽未给出请联系本人。另外,作为一名菜鸟程序媛,如文章内容有错误,欢迎点击博客右上方的扣扣链接指导交流。