[JAVA] Zusammenfassung der Verwendung von DBFlow

Einführung

Da ich eine schnelle (?) Bibliothek namens DBFlow verwendet habe, werde ich zusammenfassen, wie sie installiert und verwendet wird. Der Inhalt wird von Zeit zu Zeit ** aktualisiert **.

Die Entwicklungsumgebung ist wie folgt.

Was ist DBFlow?

Von Raizlabs bereitgestellte ORM-Bibliothek (Object-Relational Mapping). ** DBFlow ist eine Bibliothek, die die Verarbeitung in der Datenbank vereinfachen kann, z. B. die Tabellendefinition mithilfe von Anmerkungen ( @ ~ </ code>) **.

Es scheint berühmt dafür zu sein, schnell auf der Straße zu sein.

  • In Bezug auf die Verarbeitungsgeschwindigkeit ist das [Vergleichsergebnis] von Raizlabs (https://github.com/Raizlabs/AndroidDatabaseLibraryComparison) im Link zusammengefasst. Im Vergleich zu DBFlow, GreenDAO, OrmLite, Ollie und Realm wird das Ergebnis eingeführt, dass DBFlow schneller ist.

Einführung von DBFlow

Ich habe sowohl für die Installation als auch für die Verwendung auf Offizielle Dokumente verwiesen. Um DBFlow zu installieren, müssen Sie den folgenden Inhalt hinzufügen.

  • build.gradle(Project)
    Fügen Sie die folgenden Inhalte in Abhängigkeiten hinzu.

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"
}

Verwendung von DBFlow

Um DBFlow verwenden zu können, müssen Sie einige neue Klassen vorbereiten.

  1. (Neu erstellen, falls nicht verfügbar) Klasse, die DBFlow initialisiert (MyAppilcation.java)
  2. Klasse zum Deklarieren einer Datenbank (AppDatabase.java)
  3. Klasse zum Deklarieren einer Tabelle (User.java)

Initialisieren Sie DBFlow

Initialisieren Sie mit FlowManager.init (this) </ code>.

MyApplication.java


public class MyApplication extends Application {

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

Wenn Sie eine neue erstellen, fügen Sie dem Anwendungstag von AndroidManifest.xml die folgende Beschreibung hinzu.

AndroidManifest.xml



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

Datenbankdefinition

AppDatabase.java


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

    public static final String NAME = "AppDatabase";

    public static final int VERSION = 1;

}

Tabellendefinition

Die Spalte muss @Column </ code> sein und der Primärschlüssel muss @PrimaryKey </ code> sein.

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;

}
  • Natürlich können Sie auch privat hinzufügen. Vergessen Sie in diesem Fall nicht, einen Setter und einen Getter zu erstellen.

So schreiben Sie eine Abfrage

  • Anweisung einfügen
        User user = new User();
        user.name = "takenoki";
        user.age = 20;
        user.insert();
  • Anweisung auswählen
select NAME from USER_TABLE where NAME = "takenoki";

Die obige SQL-Anweisung wird für DBFlow wie folgt konvertiert.

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

In DBFlow werden in SQL verwendete Klauseln als Methoden vorbereitet, und zusätzlich zu den oben genannten können auch different (), count () usw. verwendet werden. Dieses Mal erhalten wir die Daten mit demselben Namen. Wenn Sie jedoch Daten mit demselben Namen und Alter erhalten möchten, sehen Sie wie folgt aus.

     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, der das Ergebnis der Abfrageausführung in Listview festlegt und anzeigt

    @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