案例一、
原代码
String bjid = jxglJxzlcj.getBjid();
if (StrUtil.isNotEmpty(bjid)) {
List<Map<String, Object>> zyxxList = jdbcTemplateService.getListMap(String.format(zyxxSql, bjid, CommonUtils.getXxdm()));
if(zyxxList.size() > 0 && zyxxList.get(0).get("zymc")!= null){
jxglJxzlcj.setZymc(zyxxList.get(0).get("zymc")+"");
}
}
优化代码
String bjid = jxglJxzlcj.getBjid();
Optional.ofNullable(bjid)
.ifPresent(id -> {
List<Map<String, Object>> zyxxList = jdbcTemplateService.getListMap(String.format(zyxxSql, id, CommonUtils.getXxdm()));
zyxxList.stream()
.findFirst()
.map(map -> map.get("zymc"))
.ifPresent(zymc -> jxglJxzlcj.setZymc(zymc.toString()));
});
案例二、
String zyxxSql = "select distinct jjjb.ZBID,si.zymc from jxyx_jcxxsz_jxbxx_bjcy jjjb join stu_info si on si.id=jjjb.stu_info_id " +
"where jjjb.zbid in ('%s') and si.IS_DELETE = '0' and si.xxdm = '%s'";
String bjxxSql = "select id,bh,bjmc from CASE_SCHOOL_CLASS_INFO where xxdm = '%s' and id in ('%s') " +
"union all " +
"select id,jxbh,jxbmc from JXYX_JCXXSZ_JXBXX where xxdm = '%s' and id in ('%s')";
@Override
public void afterFetch(Collection<Map<String, Object>> list) {
String xxmd = CommonUtils.getXxdm();
//查询班级名称
String bjidStrs = list.stream()
.map(map -> MapUtil.getStr(map, "bjid", ""))
.distinct().collect(Collectors.joining("','"));
bjidStrs = bjidStrs.substring(0,bjidStrs.length()-3);
List<Map<String, Object>> bjxxList = jdbcTemplateService.getListMap(String.format(bjxxSql,xxmd,bjidStrs,xxmd,bjidStrs));
bjxxList.stream()
.forEach(item -> list.stream()
.filter(e -> e.get("bjid") != null && item.get("id") != null && e.get("bjid").equals(item.get("id")))
.forEach(e -> e.put("bjmc", item.get("bjmc"))));
//查询专业名称
List<Map<String, Object>> zyxxList = jdbcTemplateService.getListMap(String.format(zyxxSql,bjidStrs,xxmd));
zyxxList.stream()
.forEach(item -> list.stream()
.filter(e -> e.get("bjid") != null && item.get("ZBID") != null && e.get("bjid").equals(item.get("ZBID")))
.forEach(e -> e.put("zymc", item.get("zymc"))));
}
说明:
import java.util.Optional;
public class Main {
public static void main(String[] args) {
// 创建一个包含值的 Optional 对象
Optional<String> optional = Optional.of("Hello, World!");
// 使用 ifPresent 方法检查 Optional 对象中是否有值,并执行相应操作
optional.ifPresent(value -> System.out.println("Value present: " + value));
// 创建一个空的 Optional 对象
Optional<String> emptyOptional = Optional.empty();
// 使用 ifPresent 方法检查空的 Optional 对象中是否有值,并执行相应操作
emptyOptional.ifPresent(value -> System.out.println("This will not be printed"));
}
}
在 Java 中,ifPresent 是一个用于 Optional 类型的方法,用于检查 Optional 对象中是否存在值并执行相应的操作。ifPresent 方法接受一个 Consumer 函数式接口作为参数,如果 Optional 对象中包含值,则将该值传递给 Consumer 接口的实现方法。
在上面的示例中,我们首先创建了一个包含值的 Optional 对象和一个空的 Optional 对象。然后,我们使用 ifPresent 方法检查这两个 Optional 对象中是否存在值,并分别执行相应的操作。对于包含值的 Optional 对象,会执行打印操作;而对于空的 Optional 对象,则不会执行任何操作。