Android肝帝戦紀のObjectBoxモバイルデータベースフレームワークの探究と実現

6321 ワード

ObjectBoxモバイルデータベースフレームワーク
ObjectBox Githubリンク:ここをクリックしてGithubにリンク
  • によると、ObjectBoxはモバイル側のデータベースフレームワークであり、インスピレーションはNoSqlから来ており、速度が非常に速く、市場で最も速いモバイル側のデータベースフレームワークと呼ばれている.
  • なぜ
  • を使うのか
  • 単純、オブジェクト向けAPI
  • 依存項目レベルを追加Gradleに追加:
  • buildscript {
        ext.objectboxVersion = '1.4.4'
        dependencies {
            classpath "io.objectbox:objectbox-gradle-plugin:$objectboxVersion"
        }
    }

    moduleレベルのGradleのヘッダ追加:
    apply plugin: 'io.objectbox' // after applying Android plugin

    その後、Make Projectでアイテムを
  • データベース・オブジェクトを新規作成し、注記@Entityで
  • をマークします.
  • @Idはプライマリ・キーの識別子であり、
  • から増加する
    @Entity
    public class UserProfile{
        @Id
        private long id;
        private String name;
        private int age;
    
        public UserProfile(String name, int age){
            this.name = name;
            this.age = age;
        }
    }

    その後、プログラムを再コンパイルし、MyObjectBoxのオブジェクトを生成した後、グローバルアプリケーションでこのオブジェクトを取得します.
    public class MyApplication extends Application {
    
        private BoxStore boxStore;
    
        @Override
        public void onCreate() {
            super.onCreate();
            boxStore = MyObjectBox.builder().androidContext(this).build();
            if (BuildConfig.DEBUG) {
                new AndroidObjectBrowser(boxStore).start(this);
            }
    
        }
    
        public BoxStore getBoxStore() {
            return boxStore;
        }
    }

    その後、対応するActivityまたは他の場所で呼び出され、各データベース・オブジェクトには対応するboxがあります.
    Box userProfileBox = ((MyApplication)getApplication()).getBoxStore().boxFor(UserProfile.class);

    userProfileBoxを取得すると、対応する添削を行うことができます.
  • UserProfile user 1=new UserProfile("wangming",18);userProfileBox.put(user1);
  • 削除
  • //   id 2   
    userProfileBox.remove(2);
    //     
    userProfileBox.removeAll();
  • //   put      
    UserProfile user1 = userProfileBox.query().equal(UserProfile_name,"min").build().findFirst();
    user1.setName("wangming");
    userProfileBox.put(user1);
  • 調べ
  • //      :        name="min"   
    List users = userProfileBox.query().equal(UserProfile_.name,"min").build().find();
    
    //      :      name = "min",age>18,  secondName  W   
    userProfileBox.query().equal(UserProfile_.name,"min")
                        .greater(UserProfile_.age,18)
                        .startWith(UserProfile_.secondName,"W");
                        .build()
                        .find();
    
    //            ,     find()。
    //         ,    findFirst()。
    
    List item =roleBox.query().startsWith(Role_.role_name," ")
                            .or().equal(Role_.role_name,"  ")
                            .orderDesc(Role_.created_at).build().find();
    
    QueryBuilder     greater、less、contain API