对get和set的操作,优化处理字段

一、场景:

比如:你的数据库没有一个名为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就更没值了。

完结
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

suqinyi

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值