我們今天來介紹如何導入使用 Android 的資料庫 Room,Android Jetpack 套件元件之一,如何融入 MVVM 架構,並且善用一些特性減少開發上的困難。
先來看看 Room 有哪些特點:
- Room 把一些 SQLite 底層實作封裝起來讓我們能更方便存取資料庫,不需要再寫冗長的程式碼才能將 SQL 和 Kotlin程式資料類別轉換
- Room支援編譯時期的 SQL 語法檢查,不需要等到執行後才能發現錯誤。
- 容易整合且語法簡單需多,少掉很多囉唆的程式碼。
- 支援LiveData / RxJava,可以使用觀察者模式來訂閱資料變更。
請問要如何實作一筆資料不存在資料庫要執行寫入,存在時執行更新呢?
我文中的DAO裡面其實有實作一個方法叫做upsert,因為Room再insert的時候會回傳成功寫入的筆數,然後搭配 onConflict = OnConflictStrategy.IGNORE,如果寫入重複資料的時候,會回傳 -1,這時候你就可以換執行 update() 方法。
你好,第一次接觸Room,請問by inject() 這部分要怎麼使用呢?
這個 by inject() 是 dependency injection 相關的寫法,我是使用 koin,跟 Room 使用完全無關。 如果你對於 dependency injection 不了解,可能要請你先了解一下這個概念後,才會大概知道這用法。 (我後續也會寫一篇關於 dependency injection 的文章來介紹)
我有找到koin,但只能在Activity內使用,無法在class PostRepositoryImpl : PostRepository 內使用,不知道這篇有沒有github可以參考
目前沒有 github 可以參考,我還正在準備相關的範例專案,如果你不急,可以再稍等一下。如果很急,那我這邊暫時幫不上你,koin 的東西也不會太困難,網路上蠻多很好的教學。
thanks