Realm for Android快速入門教程
介紹
如果你關注安卓開發的最新趨勢,你可能已經聽說過 Realm 。Realm是一個可以替代SQLite以及ORMlibraries的輕量級資料庫。
相比SQLite,Realm更快並且具有很多現代資料庫的特性,比如支援JSON,流式api,資料變更通知,以及加密支援,這些都為安卓開發者帶來了方便。
在這篇快速入門教程中,你將學到Android版Realm的基礎知識。本教程我們使用的是Realm v0.84.1。
1. 新增Realm到工程
要在安卓工程中使用Realm,你需要在module的build.gradle檔案中新增一個新增一個依賴:
compile 'io.realm:realm-android:0.84.1'
2. 建立一個Realm
一個Realm相當於一個SQLite資料庫。它有一個與之對應的檔案,一旦建立將持久儲存在安卓的檔案系統中。
要建立一個新的Realm,你可以在任意Activity中呼叫靜態方法Realm.getInstance。
Realm myRealm = Realm.getInstance(context);
注意,呼叫Realm.getInstance,而沒有傳入RealmConfiguration,會建立一個叫做 default.realm的Realm檔案。
如果你想向app中新增另一個Realm,必須使用一個RealmConfiguration.Builder物件,併為 Realm file 指定一個獨有的名字。
Realm myOtherRealm = Realm.getInstance( new RealmConfiguration.Builder(context) .name("myOtherRealm.realm") .build() );
3. 建立一個RealmObject
只要繼承了RealmObject類,任意JavaBean都能儲存在Realm中。不知道JavaBean是什麼?它就是一個可序列化的java類,有預設構造器,成員變數有相應的getter/setter方法。比如,下面這個類的例項就能輕鬆的儲存在一個Realm中:
public class Country extends RealmObject { private String name; private int population; public Country() { } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getPopulation() { return population; } public void setPopulation(int population) { this.population = population; } }
如果你想讓RealmObject的一個成員變數作為主鍵,你可以使用@PrimaryKey註解。比如,這裡演示瞭如何為Country類新增一個主鍵code:
@PrimaryKey private String code; public String getCode() { return code; } public void setCode(String code) { this.code = code; }
4. 建立transaction
雖然從一個Realm讀取資料非常簡單(下一節有講),但是向它寫入資料就稍微複雜一點。Realm遵循 ACID (資料庫事務正確執行的四個基本要素的縮寫)規範,為了確保原子性和一致性,它強制所有的寫入操作都在一個事務中執行。
要開始一個新的事務,使用beginTransaction方法。類似地,要結束這個事務,使用commitTransaction方法。
注:事務即英文裡面的transaction。
這裡演示瞭如何建立和儲存一個Country類的例項:
myRealm.beginTransaction(); // Create an object Country country1 = myRealm.createObject(Country.class); // Set its fields country1.setName("Norway"); country1.setPopulation(5165800); country1.setCode("NO"); myRealm.commitTransaction();
你可能注意到了country1並不是用Country類的構造器建立的。對於一個Realm來說,管理一個RealmObject的例項,這個例項必須用createObject方法建立。
如果你必須使用構造器,別忘了在提交事務前使用相關Realm物件的copyToRealm方法。這裡是示例:
// Create the object Country country2 = new Country(); country2.setName("Russia"); country2.setPopulation(146430430); country2.setCode("RU"); myRealm.beginTransaction(); Country copyOfCountry2 = myRealm.copyToRealm(country2); myRealm.commitTransaction();
5. 書寫查詢
Realm為建立查詢提供了一套非常直觀和流式的API。要建立一個查詢,使用相關Realm物件的where方法並傳入你感興趣的物件的類。建立完查詢之後,你可以使用返回一個RealmResults物件的findAll方法獲取所有的結果,findAll。在下面的例子中,我們獲取並列印Country的所有物件:
RealmResults<Country> results1 = myRealm.where(Country.class).findAll(); for(Country c:results1) { Log.d("results1", c.getName()); } // Prints Norway, Russia
Realm提供了幾個命名非常貼切的方法,比如beginsWith, endsWith,lesserThan 和 greaterThan,可以用來過濾,篩選結果。下面的程式碼演示瞭如何使用greaterThan方法來獲取population(人口)大於1億的Countryobjects:
RealmResults<Country> results2 = myRealm.where(Country.class) .greaterThan("population", 100000000) .findAll(); // Gets only Russia
如果你想查詢結果被歸類,你可以使用findAllSorted方法。在它的引數中,用一個String指定被歸類field的名字,並用一個boolean指定歸類順序。
// Sort by name, in descending order RealmResults<Country> results3 = myRealm.where(Country.class) .findAllSorted("name", false); // Gets Russia, Norway
總結
在這篇快速入門中,你學到了如何在安卓專案中使用Realm。可以看到建立一個Realm資料庫、儲存查詢資料是多麼的容易。要學習更多t Realm for Android的知識,你可以查閱它的 Java 文件 。
相關文章
- Android SQLite快速入門教程AndroidSQLite
- Realm的入門使用
- Materialize快速入門教程
- latex快速入門教程
- iOS開發swift -- Realm入門iOSSwift
- Android 2D遊戲引擎AndEngine快速入門教程Android遊戲引擎
- Android入門教程 | RecyclerView使用入門AndroidView
- 快應用快速入門教程
- go語言快速入門教程Go
- Vue3快速入門教程Vue
- 全面的Docker快速入門教程Docker
- React.js快速入門教程ReactJS
- android dev概念快速入門Androiddev
- Android.bp快速入門Android
- Android2.2快速入門Android
- gitbook 入門教程之快速體驗Git
- 30 分鐘快速入門 Docker 教程Docker
- 《C#快速入門教程》目錄C#
- C#快速入門教程(16)—— 介面C#
- C#快速入門教程(6)——方法C#
- Oka Mirror for Any Device快速入門教程dev
- Jupyter notebook快速入門教程
- Qt快速入門系列教程目錄QT
- Android入門教程 | Kotlin協程入門AndroidKotlin
- Realm資料庫 從入門到“放棄”資料庫
- Realm 資料庫 從入門到“放棄”資料庫
- 【Android開發入門教程】三.Activity入門指南!Android
- .Net5 WPF快速入門系列教程
- C#快速入門教程(26)—— 繪圖C#繪圖
- C#快速入門教程(8)——整數C#
- C#快速入門教程(15)—— 繼承C#繼承
- C#快速入門教程(21)—— 泛型C#泛型
- Apple Watch開發快速入門教程APP
- OUYA遊戲開發快速入門教程遊戲開發
- Oracle學習快速入門基礎教程Oracle
- PHP快速入門教程:WHILE迴圈示例PHPWhile
- ?HealthKit開發快速入門教程大學霸內部教程
- Apache Shiro 快速入門教程,shiro 基礎教程Apache