1. <nobr id="easjo"><address id="easjo"></address></nobr>

      <track id="easjo"><source id="easjo"></source></track>
      1. 
        

      2. <bdo id="easjo"><optgroup id="easjo"></optgroup></bdo>
      3. <track id="easjo"><source id="easjo"><em id="easjo"></em></source></track><option id="easjo"><span id="easjo"><em id="easjo"></em></span></option>
          貴州做網站公司
          貴州做網站公司~專業!靠譜!
          10年網站模板開發經驗,熟悉國內外開源網站程序,包括DEDECMS,WordPress,ZBlog,Discuz! 等網站程序,可為您提供網站建設,網站克隆,仿站,網頁設計,網站制作,網站推廣優化等服務。我們專注高端營銷型網站,企業官網,集團官網,自適應網站,手機網站,網絡營銷,網站優化,網站服務器環境搭建以及托管運維等。為客戶提供一站式網站解決方案?。?!

          Realm 基本用法

          來源:互聯網轉載 時間:2024-01-29 08:09:17

          前提

          Android Studio 1.5.1 或者更高版本; JDK 版本 >=7; 較新的 Android SDK 版本; 支持 Android API 9 以上的所有版本(Android 2.3 Gingerbread 及以上)。

          為什么使用Realm

          Realm Java 讓你能夠高效地編寫 app 的模型層代碼,保證你的數據被安全、快速地存儲。

          1、Realm基本配置

          A.在module的build.gradle中添加如下代碼:

          apply plugin: 'realm-android'

          如圖所示:

          1.png

          B.在project的build.gradle中添加如下代碼:

           classpath "io.realm:realm-gradle-plugin:3.5.0"

          如圖所示:

          1.png

          現在基本配置已經弄好了,可以開始操作一波了。

          2、數據庫基本操作(增刪改查)

          在做這些操作之前我們需要新建model類(類似sqlite的新建表),這里我們需要繼承RealmObject才能被存儲在數據庫中。

          public class Person extends RealmObject{    private int id;    private String name;    private int age;    public int getId() {        return id;    }    public void setId(int id) {        this.id = id;    }    public String getName() {        return name;    }    public void setName(String name) {       this.name = name;    }    public int getAge() {        return age;    }    public void setAge(int age) {        this.age = age;    }}

          表已經建好了,這時候可以對它CRUD(create/read/update/delete)了。 a.新增數據 這里需要說一下,新增數據操作需要在事務進行。如下所示:

                  Realm mRealm = Realm.getDefaultInstance();//獲取Realm實例                      mRealm.executeTransaction(new Realm.Transaction() {            @Override            public void execute(Realm realm) {                //Add a person                Person person = realm.createObject(Person.class);                person.setId(1);                person.setName("Young Person");                person.setAge(14);            }        });

          或者

           Realm mRealm = Realm.getDefaultInstance();//獲取Realm實例    mRealm.beginTransaction(); //Add a person Person person = realm.createObject(Person.class); person.setId(1); person.setName("Young Person"); person.setAge(14); mRealm.commitTransaction();

          b.查詢數據

          Realm mRealm = Realm.getDefaultInstance();//獲取Realm實例   final Person person = mRealm.where(Person.class).findFirst();//查詢第一條數據相關查詢API如下所示:1?? average(String fieldName) ->返回給定字段的平均值2?? beginGroup ->開始條件分組(“左括號”)3?? beginsWith(String fieldName,String value) ->查詢以“value”開頭的“fieldName”4?? between(String fieldName,float from,float to) ->查詢fieldName字段在"from"和to之間

          好了,方法挺多的,這里就舉幾個例子,順便給出Realm API網址(https://realm.io/docs/java/3.5.0/api/)有興趣的可以去看一下。

          c.更新數據

          Realm mRealm = Realm.getDefaultInstance();//獲取Realm實例   final Person person = mRealm.where(Person.class).findFirst();//查詢第一條數據//更新第一條數據 mRealm.executeTransaction(new Realm.Transaction() {            @Override            public void execute(Realm realm) {                person.setName("Senior Person");                person.setAge(88);            }        });

          d.刪除數據

          Realm mRealm = Realm.getDefaultInstance();//獲取Realm實例   mRealm.executeTransaction(new Realm.Transaction() {   @Override    public void execute(Realm realm) {        //清空Person表        realm.delete(Person.class);    } });

          3、數據庫遷移(數據庫升級)

          所有數據庫都要處理模型改變的情況。Realm 的數據模型用標準 Java 對象來定義,改變數據模型只需要改變數據對象定義即可。 Application中需要如下自定義配置:

            // Initialize Realm. Should only be done once when the application starts.  Realm.init(this);  RealmConfiguration myConfig=new RealmConfiguration.Builder()                .schemaVersion(REALM_VERSION)                .migration(new MyConfigMigration())                .name("myrealm.realm")                .build();  Realm.setDefaultConfiguration(myConfig);

          這時候我們需要自定義Migration

          public class MyConfigMigration implements RealmMigration {    public static final String TAG = "ez";    @Override    public void migrate(DynamicRealm realm, long oldVersion, long newVersion) {        realmUpdate((int) oldVersion,realm);        //官方寫法//        if (oldVersion == 0 && newVersion == 1) {//            version1(realm);//            ++oldVersion;//        }////        if (oldVersion == 1 && newVersion == 2) {//            version2(realm);//            ++oldVersion;//        }    }    /**     * realm數據庫遷移(升級)     * 降級:需要使用if判斷來處理     * @param oldVersion     * @param realm     */    private void realmUpdate(int oldVersion, DynamicRealm realm) {        switch (oldVersion) {            case 0:                version1(realm);            case 1:                version2(realm);            default:                break;        }    }    /**     * version=1時,增加fullName,刪除name。     * <p>     * 注意:添加字段時,對應的model也要對應添加(如果標記的不為空,那么model也必須注解不為空),刪除字段時,對應的model也要刪除,     *     * @param realm     */    private void version1(DynamicRealm realm) {        RealmSchema schema = realm.getSchema();        RealmObjectSchema personSchema = schema.get("Person");        personSchema.addField("fullName", String.class, FieldAttribute.REQUIRED)                .transform(new RealmObjectSchema.Function() {                    @Override                    public void apply(DynamicRealmObject obj) {                        obj.set("fullName", obj.get("name") + "Full");                    }                })                .removeField("name");    }    /**     * version=2時,增加了Pet類。     */    private void version2(final DynamicRealm realm) {        RealmSchema schema = realm.getSchema();        //創建對應表和表字段        RealmObjectSchema petSchema = schema.create("Pet")                .addField("name", String.class, FieldAttribute.REQUIRED)                .addField("type", String.class, FieldAttribute.REQUIRED);        //將創建的表添加到Person表中        schema.get("Person")                .addRealmListField("pets", petSchema)                .transform(new RealmObjectSchema.Function() {                    @Override                    public void apply(DynamicRealmObject obj) {                        if (obj.getString("fullName").equals("Senior PersonFull")) {                            DynamicRealmObject pet = realm.createObject("Pet");                            pet.setString("name", "Jemos");                            pet.setString("type", "cat");                            obj.getList("pets").add(pet);                        }                    }                });    }}

          當我們每次增加schemaVersion的值時,數據庫就會走升級操作。 好了,上面就是Realm的基本用法。詳細用法請參考官網: a、中文版(版本3.1.1)https://realm.io/cn/docs/java/latest/#migrations b、英文版(版本3.5.0)https://realm.io/docs/java/latest/ c、官方Realm使用Demo https://github.com/realm/realm-java

          標簽:realm-

          網絡推廣與網站優化公司(網絡優化與推廣專家)作為數字營銷領域的核心服務提供方,其價值在于通過技術手段與策略規劃幫助企業提升線上曝光度、用戶轉化率及品牌影響力。這...

          在當今數字化時代,公司網站已成為企業展示形象、傳遞信息和開展業務的重要平臺。然而,對于許多公司來說,網站建設的價格是一個關鍵考量因素。本文將圍繞“公司網站建設價...

          在當今的數字化時代,企業網站已成為企業展示形象、吸引客戶和開展業務的重要平臺。然而,對于許多中小企業來說,高昂的網站建設費用可能會成為其發展的瓶頸。幸運的是,隨...

          沈陽廣全中學報名需要什么條件?沈陽市廣泉中學只要有學籍和初中都可以報名。廣泉沖蕩是一所民辦高中,省級高級示范中學。這個學校的軟硬件條件不錯,但是學費不低。廣全中學高中部在沈陽排名?高級中學在沈陽排名靠前,廣泉中學也是非常有名的民辦中學。它的教學質量很好,高考升學率很高,所以在沈陽的排名是名列前茅的。沈陽廣泉中學建立時間?沈陽市廣泉中學創建于1993年,是沈陽市一所歷史悠久的民辦中學,也是沈陽市升學...

          蘋果手機怎么把天氣設置在通知欄?工具/原材料:蘋果6s手機。1.首先,向下滑動iPhone的主界面。2.然后找到編輯并點擊它。3.然后找到天氣,點擊左邊的加號鍵。4.最后,單擊屏幕右上角的Finish。完成此設置后,天氣將被添加到通知欄中。蘋果手機怎么把天氣設置在通知欄?工具/原材料:蘋果6s手機。1.首先,向下滑動iPhone的主界面。2.然后找到編輯并點擊它。3.然后找到天氣,點擊左邊的加號鍵...

          1分1981硬幣值多少錢? 1981年1分硬幣價值3000-4000元。1981年的一便士只出現在1981年的《硬幣》紀念套裝中。這套年度套幣主要是作為錢幣收藏贈送或出售給外賓,在流通領域根本找不到。此外,1979年的五分硬幣和1980年的兩分五分硬幣也是如此,所以這五種硬幣統稱為 "五大天王 "在新的硬硬幣。1981年硬幣套產量為23400套。在1分1981硬幣值多少錢?,1981年的1便士約合...

          TOP
          国产初高中生视频在线观看|亚洲一区中文|久久亚洲欧美国产精品|黄色网站入口免费进人
          1. <nobr id="easjo"><address id="easjo"></address></nobr>

              <track id="easjo"><source id="easjo"></source></track>
              1. 
                

              2. <bdo id="easjo"><optgroup id="easjo"></optgroup></bdo>
              3. <track id="easjo"><source id="easjo"><em id="easjo"></em></source></track><option id="easjo"><span id="easjo"><em id="easjo"></em></span></option>