#java
Есть вот такая конструкция
Integer insertId = App.officeAccountDao.insertOfficeAccountStep(officeAccountStep).intValue();
OfficeAccountItems officeAccountItems = null;
if (insertId != null) {
officeAccountItems = App.officeAccountDao.getOfficeAccountItemById(insertId);
if (officeAccountItems == null) {
response.status(404);
return "";
}
}
В первой строке происходит добавление в БД и запрос возвращает id добавленной записи.
Затем проверяется, равен ли id null или нет, и если не равен, то происходит выборка
этой добавленной записи по ее id.
Как избавиться от этих проверок на null, используя Optional? Написал вот так
OfficeAccountItems officeAccountItems = Optional.ofNullable(App.officeAccountDao.insertOfficeAccountStep(officeAccountStep))
.map(BigInteger::intValue)
.filter(Objects::nonNull)
.map(id -> App.officeAccountDao.getOfficeAccountItemById(id))
.orElse(null);
if (officeAccountItems == null) {
response.status(404);
return "";
}
Но не уверен что это верно. Оно вроде как работает, и даже работает так как надо,
но все таки, по-моему, что-то не так здесь написано
Ответы
Ответ 1
Можно написать просто как-то так: return Optional.ofNullable(App.officeAccountDao.insertOfficeAccountStep(officeAccountStep)) .map(BigInteger::intValue) .map(App.officeAccountDao::getOfficeAccountItemById) .orElseGet(() -> { response.status(404); return ""; }); Использование filter(Objects::nonNull) точно лишнее, т.к. Optional и так внутри себя всё проверяет.
Комментариев нет:
Отправить комментарий