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

  • 相关阅读:
    linux常用命令(18)find exec
    linux常用命令(17)find命令概览
    linux常用命令(16)locate命令
    linux常用命令(15)whereis命令
    linux常用命令(14)which命令
    linux常用命令(13)tail命令
    linux常用命令(12)head命令
    linux常用命令(11)less命令
    linux常用命令(10)more命令
    linux常用命令(9)nl命令
  • 原文地址:https://www.cnblogs.com/goingforward/p/12092026.html
Copyright © 2020-2023  润新知