使用Lambda表达式和Optional优化获取角色列表代码

以下代码演示了如何使用Java Lambda表达式和Optional来优化获取角色列表的代码,使其更加简洁、可读性更高,同时避免了空指针异常。

原始代码:

public PageData<RoleVO> getRoleList(PageQuery<RoleDTO> pageQuery) {
    String name = Optional.ofNullable(pageQuery.getQuery())
            .map(RoleDTO::getName)
            .orElse(null);
    String remark = Optional.ofNullable(pageQuery.getQuery())
            .map(RoleDTO::getRemark)
            .orElse(null);
//        String name = pageQuery.getQuery().getName();
//        String remark = pageQuery.getQuery().getRemark();
    IPage<Role> roleList = this.lambdaQuery()
            .like(StrUtil.isNotBlank(name), Role::getName, name)
            .like(StrUtil.isNotBlank(remark), Role::getRemark, remark)
            .orderByAsc(Role::getCreateTime)
            .page(new Page<>(pageQuery.getCurrent(), pageQuery.getSize()));
    return new PageData<>(roleList.convert(RoleConverter.INSTANCE::roleToRoleVO));
}

优化后的代码:

public PageData<RoleVO> getRoleList(PageQuery<RoleDTO> pageQuery) {
    String name = Optional.ofNullable(pageQuery.getQuery()).map(RoleDTO::getName).orElse(null);
    String remark = Optional.ofNullable(pageQuery.getQuery()).map(RoleDTO::getRemark).orElse(null);
    IPage<Role> roleList = lambdaQuery()
            .like(StrUtil.isNotBlank(name), Role::getName, name)
            .like(StrUtil.isNotBlank(remark), Role::getRemark, remark)
            .orderByAsc(Role::getCreateTime)
            .page(new Page<>(pageQuery.getCurrent(), pageQuery.getSize()));
    return new PageData<>(roleList.convert(RoleConverter.INSTANCE::roleToRoleVO));
}

优化说明:

  1. 使用Optional.ofNullable(pageQuery.getQuery()).map(RoleDTO::getName).orElse(null); 来获取nameremark值,避免了空指针异常。
  2. 简化了代码结构,使用Lambda表达式更加简洁,可读性更高。

注意:

  • StrUtil.isNotBlank(name)用于判断name是否为空字符串,避免了空指针异常。
  • RoleConverter.INSTANCE::roleToRoleVO 使用方法引用,简化了代码,提高了可读性。

通过使用Lambda表达式和Optional,我们可以有效地提高代码简洁性和可读性,并避免空指针异常,从而提升代码质量。

Java Lambda表达式和Optional优化代码示例:获取角色列表

原文地址: https://www.cveoy.top/t/topic/nsSK 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录