使用mybatisplus查询sql时,报Error attempting to get column ‘ID‘ from result set错误

问题描述:

在使用如下代码进行查询时,报Error attempting to get column 'ID' from result set错误:

java 复制代码
 LambdaQueryWrapper<TimeFeature> wrapper = new LambdaQueryWrapper<>();
 wrapper.eq(TimeFeature::getDate, currentDateTime);
 TimeFeature timeFeature = timeFeatureMapper.selectOne(wrapper);

首先排除数据库字段大小写问题。

然后考虑ID字段在本轮逻辑中不是很重要,对代码做了如下更改,指定了查询字段:

java 复制代码
LambdaQueryWrapper<TimeFeature> wrapper = new LambdaQueryWrapper<>();
wrapper.select(TimeFeature::getDate,TimeFeature::getDayType5)
.eq(TimeFeature::getDate, currentDateTime);
TimeFeature timeFeature = timeFeatureMapper.selectOne(wrapper);

结果查询正常,然后能得出结果集到实体类的映射过程出现问题。

然后通过排查代码,发现我的实体类使用了@AllArgsConstructor注解,

java 复制代码
@Data
@TableName("TIME_FEATURE")
@ApiModel(value = "TimeFeature对象", description = "日期类型映射")
@AllArgsConstructor
public class TimeFeature extends BaseEntity{

    @ApiModelProperty("日期")
    private LocalDateTime date;

    @ApiModelProperty("类型")
    private Integer dayType5;

}

这个注解导致了指定的默认构造方法是只包含date,dayType5两个参数的方法。所以无法通过默认的构造方法将对应的结果集映射到实体类。

所以将这个注解去掉就解决问题了。

引申思考,那使用@Builder注解会不会导致类似的问题呢?

相关推荐
loser.loser5 小时前
QQ邮箱发送验证码(Springboot)
java·spring boot·mybatis
毅航8 小时前
Trae复刻Mybatis之旅(一):创建SqlSession会话,构建代理
后端·mybatis·trae
潮流coder9 小时前
mybatis的if判断==‘1‘不生效,改成‘1‘.toString()才生效的原因
java·tomcat·mybatis
BillKu12 小时前
Java + Spring Boot + Mybatis 实现批量插入
java·spring boot·mybatis
dog shit12 小时前
web第十次课后作业--Mybatis的增删改查
android·前端·mybatis
emo了小猫13 小时前
Mybatis #{} 和 ${}区别,使用场景,LIKE模糊查询避免SQL注入
数据库·sql·mysql·mybatis
yuren_xia21 小时前
Spring Boot + MyBatis 集成支付宝支付流程
spring boot·tomcat·mybatis
神仙别闹1 天前
基于Java(SpringBoot、Mybatis、SpringMvc)+MySQL实现(Web)小二结账系统
java·spring boot·mybatis
crud1 天前
Spring Boot 整合 MyBatis-Plus:从入门到精通,一文搞定高效持久层开发!
java·spring boot·mybatis
爱上语文1 天前
MyBatisPlus(3):常用配置
java·后端·mybatis