[JAVA] Résumé de l'utilisation de DBFlow

introduction

Puisque j'ai utilisé une bibliothèque rapide (?) Appelée DBFlow, je vais résumer comment l'installer et l'utiliser. Le contenu sera mis à jour ** de temps en temps **.

L'environnement de développement est le suivant.

Qu'est-ce que DBFlow

Bibliothèque ORM (Object-Relational Mapping) fournie par Raizlabs. ** DBFlow est une bibliothèque qui peut simplifier le traitement autour de la base de données tel que la définition de table en utilisant des annotations ( @ ~ </ code>) **.

Il semble être célèbre pour être rapide dans les rues.

  • Concernant la vitesse de traitement, le [résultat de comparaison] de Raizlabs (https://github.com/Raizlabs/AndroidDatabaseLibraryComparison) est résumé dans le lien. Par rapport à DBFlow, GreenDAO, OrmLite, Ollie, Realm, le résultat que DBFlow est plus rapide est introduit.

Introduction de DBFlow

Je me suis référé aux Documents officiels pour l'installation et l'utilisation. Pour installer DBFlow, vous devez ajouter le contenu suivant.

  • build.gradle(Project)
    Ajoutez le contenu suivant dans les dépendances.

build.gradle


dependencies {
    classpath 'com.neenbedankt.gradle.plugins:android-apt:1.7'
}
  • build.gradle(app)

build.gradle(app)


dependencies {
    apt 'com.raizlabs.android:DBFlow-Compiler:2.2.1'
    compile "com.raizlabs.android:DBFlow-Core:2.2.1"
    compile "com.raizlabs.android:DBFlow:2.2.1"
}

Comment utiliser DBFlow

Pour utiliser DBFlow, vous devez préparer quelques nouvelles classes.

  1. (Créer une nouvelle si non disponible) Classe qui initialise DBFlow (MyAppilcation.java)
  2. Classe de déclaration d'une base de données (AppDatabase.java)
  3. Classe de déclaration d'une table (User.java)

Initialiser DBFlow

Initialisez avec FlowManager.init (this) </ code>.

MyApplication.java


public class MyApplication extends Application {

    @Override
    public void onCreate() {
        super.onCreate();
        FlowManager.init(this);
    }
}

Si vous en créez un nouveau, ajoutez la description suivante à la balise d'application d'AndroidManifest.xml.

AndroidManifest.xml



 <application
        android:name=".MyApplication" />
 </application>

Définition de la base de données

AppDatabase.java


@Database(name = AppDatabase.NAME, version = AppDatabase.VERSION)
public class AppDatabase {

    public static final String NAME = "AppDatabase";

    public static final int VERSION = 1;

}

Définition de la table

La colonne doit être @Column </ code> et la clé primaire doit être @PrimaryKey </ code>.

User.java


@Table(databaseName = AppDatabase.NAME, tableName = "USER_TABLE")
public class User extends BaseModel { 

    @Column
    @PrimaryKey(autoincrement = true)
    int id;

    @Column(name = "NAME")
    public String name;

    @Column(name = "AGE")
    public int age;

}
  • Bien sûr, vous pouvez également ajouter privé. Dans ce cas, n'oubliez pas de créer un setter et un getter.

Comment rédiger une requête

  • Instruction d'insertion
        User user = new User();
        user.name = "takenoki";
        user.age = 20;
        user.insert();

--Sélectionnez l'instruction

select NAME from USER_TABLE where NAME = "takenoki";

L'instruction SQL ci-dessus est convertie pour DBFlow comme suit.

     List<User> list = new Select()
                .from(User.class)
                .where(Condition.column(User$Table.NAME).is(name))
                .queryList();

Dans DBFlow, les clauses utilisées en SQL sont préparées comme des méthodes, et en plus de ce qui précède, distinct (), count (), etc. peuvent également être utilisés. Cette fois, nous obtenons les données avec le même nom, mais si vous voulez obtenir les données avec le même nom et âge, ce sera comme suit.

     List<User> list = new Select()
                .from(User.class)
                .where(
                    Condition.column(User$Table.NAME).is(name),
                    Condition.column(User$Table.AGE).is(age)
                 )
                .queryList();

Code qui définit le résultat de l'exécution de la requête dans Listview et l'affiche

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment_sample, container, false);

        String name = "takenoki";
        int age = 20;

        ArrayAdapter<String> adapter = new ArrayAdapter<String>(
                act,
                android.R.layout.simple_list_item_1
        );

        List<User> list = new Select()
                .from(User.class)
                .where(Condition.column(User$Table.USER_NAME).is(name))
                .queryList();

        for (int i = 0; i < list.size(); i++) {
            adapter.add(String.valueOf(list.get(i).age));
        }

        listView.setAdapter(adapter);

        return view;
    }

Recommended Posts