TGViewer
Android Live 🤖 Android Live 🤖 @android_live · 5.12K subscribers
Post #536 3.59K
​​Room и опциональные параметры
#room

Есть достаточно интересная фича Room о которой не написано в документации, но которая может здорово облегчить жизнь разработчикам.
Думаю, причина заключается в том, что эта функция лишь косвенно связана с Room, а больше связана с написанием SQL-запросов. 🙂

Опытным путём получилось её найти, и спешу поделиться этим лайфхаком с вами.

Допустим, у вас в приложении есть список людей. При этом по умолчанию выводится полный список, но пользователь приложения может выбрать параметр с именем человека, и вам надо отфильтровать список по этому параметру.
В Kotlin у нас есть возможность использовать опциональные параметры для функции, и первое решение, которое приходит в голову — это написать запрос, используя их:

@Query("SELECT * FROM User WHERE name = :name")
fun getUsers(name: String? = null): List<User>

При такой записи параметр считается за часть запроса, и не передаёт name, в этом случае список будет пустым.
Но можно чуть-чуть поменять запрос, и всё работает корректно:

@Query("SELECT * FROM User WHERE (:name IS NULL OR name = :name)")
fun getUsers(name: String? = null): List<User>

При такой записи параметр name будет игнорироваться, если он будет null, и возвратится весь список, имеющийся в базе данных.
Особенно круто эта фича заходит, если фильтр состоит из нескольких полей (3 и более).

А какие у вас есть неочевидные кейсы при работе с Room?
More from @android_live
  1. Sep 29, 2026Post #1130
  2. Sep 29, 2026На днях попалась вакансия мечты Вроде всё начинается как неплохо: удалёнка, Kotlin/Jetpack…
  3. Sep 28, 2026На днях ревьювил код, связанный с копированием в буфер обмена И заметил, что многие прилож…
  4. Sep 26, 2026AirDrop на Android, похоже, уже есть на нескольких моделях Android Но, оказывается, всё эт…
  5. Sep 25, 2026Похоже, есть что посмотреть на выходных Недавно вышло интервью с Женей Вороновым Jake Whar…
  6. Sep 15, 2026Google выкатили ARTEMIS Эта инструмент, который превращает обычный текст в реальные действ…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →