一、场景:
比如:你的数据库没有一个名为status的字段,但是前端需要显示。
我们就可以在get和set方法中进行处理
例如:你查询出字段值为CK123,RK567 。前缀CK表示出库,前缀RK表示入库
这时前端需要显示类型为出库还是入库。
我们就可以在get 和 set进行处理
二、案例说明:
2.1、数据库中的字段:
2.2、在不增加字段和二次循环的做法下==>得到如下效果:
password等于ok的话status显示成功
password等于error的话status显示失败
三、实现
3.1、实体类-新增字段
public class User {
private Long id;
private String username;
private String password;
private String status;//数据库没有的字段 status
}
3.2、sql处理
status是数据库没有的字段,用空串定义出来
select
id ,
username,
password,
' ' as status //这边用空串定义出变量用来触发get和set
from user
3.3、get和set的处理
public String getStatus() {
return status;
}
public void setStatus(String status) {
if (this.getPassword() != null) {
String password = this.getPassword();
if ("ok".equals(password)) {
this.status = "成功";
} else if ("error".equals(password)) {
this.status = "失败";
} else {
this.status = "";
}
}
}
3.4、好处
这样的话,就没有在数据库添加字段的前提下,减少了一次循环处理。提升了效率
这边小编这是举了列子,也可以对时间显示,等其他的进行处理
3.5、完整的实体类和sql
package sqy.db_safe.pojo;
/**
* @author suqinyi
* @Date 2021/7/9
*/
public class User {
private Long id;
private String username;
private String password;
private String status;
public User() {
}
public User(Long id, String username, String password) {
this.id = id;
this.username = username;
this.password = password;
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getStatus() {
return status;
}
public void setStatus(String status) {
if (this.getPassword() != null) {
String password = this.getPassword();
if ("ok".equals(password)) {
this.status = "成功";
} else if ("error".equals(password)) {
this.status = "失败";
} else {
this.status = "";
}
}
}
}
//==================sql============================
select
id ,
username,
password,
' ' as status
from user
四、致命细节-顺序问题
sql里面的status和实体类里面的status的get和set方法。必须在password字段后面!!!
原因:password没值,你status就更没值了。