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

相关推荐
super_lzb6 小时前
mybatis拦截器ParameterHandler详解
java·数据库·spring boot·spring·mybatis
CodeAmaz12 小时前
MyBatis 分页插件实现原理(Interceptor 机制 + SQL 改写)
mybatis·分页插件
CodeAmaz13 小时前
MyBatis 如何实现“面向接口”查询
mybatis·面向接口
此剑之势丶愈斩愈烈14 小时前
mybatis-plus乐观锁
开发语言·python·mybatis
雨中飘荡的记忆15 小时前
MyBatis数据源模块详解
mybatis
heartbeat..15 小时前
Java 持久层框架 MyBatis 全面详解(附带Idea添加对应的XML文件模板教程)
java·数据库·intellij-idea·mybatis·持久化
Predestination王瀞潞16 小时前
Java EE数据访问框架技术(第三章:Mybatis多表关系映射-下)
java·java-ee·mybatis
刘一说1 天前
2026年Java技术栈全景图:从Web容器到云原生的深度选型指南(附避坑指南)
java·前端·spring boot·后端·云原生·tomcat·mybatis
独自归家的兔2 天前
Spring Retryable 注解完全指南:从入门到精通,让接口容错更简单
java·spring·mybatis
sunddy_x2 天前
MyBatis 与 SpringBoot 集成入门
spring boot·后端·mybatis