实体类的属性和数据库的字段不匹配

实体类

public User(int id, String name, String password) {
this.id = id;
this.name = name;
this.password = password;
}

数据库

image

我们发现这里实体类的属性和数据库的字段不对应(password和pwd)

运行结果

User{id=3, name='李四', password='null'}
User{id=4, name='李三', password='null'}

这里的password是空的。原因是MyBatis自带一个类型构造器,会在‘背地里’创建与数据库相对应的实体类属性,所以password没有对应的数据库字段

解决方法

1,给pwd取别名为password

<select id="getUserByID2" resultType="user" parameterType="Map">
select id,name,pwd as password from user where name like "%" #{name} "%"
</select>

运行结果

User{id=3, name='李四', password='1231233'}
User{id=4, name='李三', password='123123'}

2,应用resultMap

<resultMap id="userMap" type="User">
<result column="pwd" property="password"></result>
</resultMap>
<select id="getUserByID2" resultMap="userMap">
select * from user where name like "%" #{name} "%"
</select>

注意这里的 type="User",我取了别名,如果没有取别名,要把类的绝对路径写全

运行结果

User{id=3, name='李四', password='1231233'}
User{id=4, name='李三', password='123123'}
posted @   小罗要有出息  阅读(213)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 字符编码:从基础到乱码解决
· 提示词工程——AI应用必不可少的技术
点击右上角即可分享
微信分享提示