There is no getter for property named ‘username’ in ‘class com.itheima.domain.User’
- 原因
- 解决办法
一:原因:一开始以为的是User没有写get方法,后来分析觉得不是,因为一开始是用自动生成的
- 测试代码(Test)
public void testFindByVO(){
QueryVo queryVo = new QueryVo();
User user = new User();
user.setUserName("%王%");
queryVo.setUser(user);
List<User> users = userDao.findUserByVo(queryVo);
for (User user1 : users) {
System.out.println(user1);
}
- queryVo
package com.itheima.domain;
public class QueryVo {
private User user;
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
}
- Mybatis-xml配置文件
<!-- 根据queryVo的条件查询用户 -->
<select id="findUserByVo" parameterType="com.itheima.domain.QueryVo" resultMap="userMap">
select * from user where username like #{user.username}
</select>
- User实体类
package com.itheima.domain;
import java.io.Serializable;
import java.util.Date;
public class User implements Serializable {
private Integer userId;
private String userName;
private String userAddress;
private String userSex;
private Date userBirthday;
public Integer getUserId() {
return userId;
}
public void setUserId(Integer userId) {
this.userId = userId;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getUserAddress() {
return userAddress;
}
public void setUserAddress(String userAddress) {
this.userAddress = userAddress;
}
public String getUserSex() {
return userSex;
}
public void setUserSex(String userSex) {
this.userSex = userSex;
}
public Date getUserBirthday() {
return userBirthday;
}
public void setUserBirthday(Date userBirthday) {
this.userBirthday = userBirthday;
}
@Override
public String toString() {
return "User{" +
"userId=" + userId +
", userName='" + userName + '\'' +
", userAddress='" + userAddress + '\'' +
", userSex='" + userSex + '\'' +
", userBirthday=" + userBirthday +
'}';
}
}
二:解决办法,仔细发现xml文件中映射配置文件(user.username中的username错了,应修改为user.userName)
在配置映射文件中需要注意的是表名跟实体类的表名相同,如果不同可以使用的是resultMap配置
- resultMap配置
<resultMap id="userMap" type="uSer">
<!-- 主键字段的对应 -->
<id property="userId" column="id"></id>
<!--非主键字段的对应-->
<result property="userName" column="username"></result>
<result property="userAddress" column="address"></result>
<result property="userSex" column="sex"></result>
<result property="userBirthday" column="birthday"></result>
</resultMap>
萌新请求关注QAQ
本文介绍了一个关于MyBatis映射配置文件中属性名称不匹配导致的问题及其解决方案。问题出现在尝试通过VO(Value Object)进行查询时,XML配置文件中的属性名与Java实体类属性名不符。文章详细解释了错误的原因,并提供了正确的配置方法。

4367

被折叠的 条评论
为什么被折叠?



