踩坑纪录——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两个注解。

posted @ 2019-12-24 15:59  JillWen  阅读(1607)  评论(1编辑  收藏  举报