表中有值,使用@Select查询出来的数据有null值
先描述问题:
表映射类
@Table(name = "sys_user",charset = MySqlCharsetConstant.UTF8,engine = MySqlEngineConstant.InnoDB)
public class User {
@Column(name = "id",isKey = true,type = MySqlTypeConstant.VARCHAR,length = 100,comment = "主键ID")
private String id;
@TableField("user_name")
private String name;
@TableField("user_age")
private Integer age;
@TableField("user_email")
private String email;
}
mapper接口
@Select(value = "select id,user_name,user_age,user_email from sys_user where user_name = #{name}")
List<User> selectUserByName(@Param("name") String username);
调用接口查询
@Test
void testSelectUserByName(){
userServcie.selectUserByName("tom_0").forEach(System.out::println);
}
User(id=3, name=null, age=null, email=null),表中数据是User(id=3, name=tom_0, age=18, email=tom_0@qq.com)
原因分析:这是因为mybatis并不会在使用@Select时按表映射类映射字段和属性,所以查出来的数据除了id,其他都是null,所以这里要把所有要查询的字段名改为和映射类属性一样一一对应,这样就正确了。
//正确答案
@Select(value = "select id,user_name as name,user_age as age,user_email from sys_user where user_name = #{name}")
List<User> selectUserByName(@Param("name") String username);
本文来自博客园,作者:勤匠,转载请注明原文链接:https://www.cnblogs.com/JarryShu/articles/17840438.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!