Posted on Leave a comment

Android ORM Realm, ObjectBox or Room.

Realm, ObjectBox or Room. Which one is for you?

Database relations with Room [ https://medium.com/androiddevelopers/database-relations-with-room-544ab95e4542 ]

Offline App with RxJava 2 and Room

Room RxJava

SQLite Triggers (+ Android Room) [ https://proandroiddev.com/sqlite-triggers-android-room-2e7120bb3e3a ]



[Forwarded from Android Live 🤖]
Room и опциональные параметры

room

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

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

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

@Query(“SELECT * FROM User WHERE name = :name”)
fun getUsers(name: String? = null): List

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

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

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

А какие у вас есть неочевидные кейсы при работе с Room?

[https://t.me/android_live/536]


Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.