踩坑紀錄——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兩個注解。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM