使用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注解会不会导致类似的问题呢?

相关推荐
MadPrinter2 小时前
SpringBoot学习日记 Day11:博客系统核心功能深度开发
java·spring boot·后端·学习·spring·mybatis
奔跑吧邓邓子4 小时前
【Java实战㉟】Spring Boot与MyBatis:数据库交互的进阶之旅
java·spring boot·实战·mybatis·数据库交互
lunzi_fly6 小时前
【源码解读之 Mybatis】【基础篇】-- 第1篇:MyBatis 整体架构设计
java·mybatis
摸鱼仙人~7 小时前
深入理解 MyBatis-Plus 的 `BaseMapper`
java·开发语言·mybatis
隔壁阿布都10 小时前
spring boot + mybatis 使用线程池异步修改数据库数据
数据库·spring boot·mybatis
Mcband1 天前
MyBatis 拦截器让搞定监控、脱敏和权限控制
mybatis
╭╰4021 天前
苍穹外卖优化-续
java·spring·mybatis
weixin_456904271 天前
基于Spring Boot + MyBatis的用户管理系统配置
spring boot·后端·mybatis
码熔burning1 天前
Redis 的三种高效缓存读写策略!
redis·缓存·mybatis
stein_java2 天前
Mybatis-7 XML映射器
数据库·sql·mybatis