先说结论:实体类中的主键最好不加"_",否则可能导致select出的主键值为null
如下是我做的测试:
1.主键包含"_"
public class Manager {
private Integer i_d;
private String name;
private Integer password;
@Override
public String toString() {
return "Manager{" +
"i_d=" + i_d +
", name='" + name + '\'' +
", password=" + password +
'}';
}
public Integer getI_d() {
return i_d;
}
public void setI_d(Integer i_d) {
this.i_d = i_d;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getPassword() {
return password;
}
public void setPassword(Integer password) {
this.password = password;
}
}
对应的manager表如下
测试结果如下
2.主键不包含"_"
public class Manager {
private Integer id;
private String name;
private Integer password;
@Override
public String toString() {
return "Manager{" +
"id=" + id +
", name='" + name + '\'' +
", password=" + password +
'}';
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getPassword() {
return password;
}
public void setPassword(Integer password) {
this.password = password;
}
}
manager表如下:
测试结果如下
补充
如果主键值死活都是null,那有可能是这个原因;如果非主键值总是null,那就有可能是属性名与数据库字段名不一致
总的来说
我经过了诸多测试发现了这个问题,但我由于技术有限并不清楚为什么会有这样的结果,希望知道的能在评论区说明一下原因。