做判断时要使用正向判断

如判断字段是否有内容

  • 如果场景是字段非空采取某些操作,则使用StringUtils.hasText()
  • 如果场景是字段为空采取某些操作,则使用StringUtils.isEmpty()

注:StringUtils.isEmpty()StringUtils.isBlank()是不一样的。必要时自己封装同时检查Empty和Blank的方法。

Boolean判断

不管是出于什么原因定义Boolearn对象,在判断真假时要用Boolean.TRUE.equals(boolearn_obj)

条件判断

条件判断语句,如if里不要放太复杂或者长的语句。

例如A.equal(C) && B.equal(C),可以使用Arrays.asList(A, B).contains(C)

null的判断

  • CollectionUtils.isEmpty()
  • StringUtils.isEmpty()
  • StringUtils.hasText()
  • Objects.equal()
  • Boolean.TRUE.equals()

String类型为null时的拼接

String departureCity = null;
String arrivalCity = null;
System.out.println(departureCity+arrivalCity);

/* 
输出是nullnull
null转换为String类型会转为“null”字符串
*/

MySQL的last_modify_time

一般数据库里都有个last_modify_time字段,定义是

last_modify_time timestamp default CURRENT_TIMESTAMP null on update CURRENT_TIMESTAMP

一次我通过SQL_UPDATE升级脚本,脚本是update了两条数据,第一次执行的时候成功了,last_modify_time字段也更新了,后来我又执行了一次,但是这次last_modify_time字段的值没更新,我以为是脚本出问题了,实际上虽然我刷了两条数据,执行结果也显示影响了两行,但是由于内容没有发生改变,所以last_modify_time值也没更新。

依次执行接口所有实现

一个接口有三个实现,则使用:

    @Autowired
    private List<BaseInterface> interfaceList;

    public void handle() {
        interfaceList.forEach(face -> face.show());
    }

会依次执行每个实现的show(),不需要特别初始化。

善用Optional

原:

if (!Tools.isEmpty(getStationPinYin())) {
    trainStation.setPinYin(getStationPinYin());
}

现:

Optional.ofNullable(getStationPinYin()).ifPresent(trainStation::setPinYin);

当然了,ofNullable只能判断是不是null,有时候我们需要判断StringUtils.isEmpty(),就不能直接这么用了。

Optional的层层嵌套,用于重构有层级的大量if并排代码。
return 返回Optional<>的方法1.orElseGet(() -> 返回Optional<>的方法2.orElseGet(() -> 返回Optional<>的方法3.orElse(null)));

标签: none

添加新评论