day2
项目名:03mybatics_property_column(对02的拷贝)
四、属性名和字段名不一致的处理
- 数据库中表的设计
- java中的实体类:
package com.mybatis.entity;
public class User {
private int id;
private String name;
private String password;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
@Override
public String toString() {
return "User [id=" + id + ", name=" + name + ", password=" + password + "]";
}
}
(把此处的pwd全部改成了password,对应test类中的查询结果如下)
3. mapper映射文件
4. 密码没有获取到select id,name,pwd from user where id = #{id}
原因:mybatis会根据查询的列名(会将列名转为小写,因为数据库中不区分大小写) 去进行设值(set方法) 即此处的set方法是setpwd,实体类中对应的方法却写成了setPassword,当然查不到。
5. 解决列名和属性名不一致的方法:
a).为列名指定别名 别名和Java实体类的属性名一致。
b)设值结果映射类型