Help us understand the problem. What is going on with this article?


More than 3 years have passed since last update.

○ 事前準備として

@Database(name = AppDatabase.NAME, version = AppDatabase.VERSION) //用意されているDatabaseアノテーションを使用する (*1)
public class AppDatabase {

  public static final String NAME = "AppDatabase";

  public static final int VERSION = 1;

*1 ここでアノテーションつけてname=データベース名,version=バージョンを指定すると、ビルド時に(クラス名)_Databaseクラスが作成される。

@Table(database = AppDatabase.class) //用意されているTableアノテーションを使用する(*2)
public class User extends BaseModel{ //用意されているBaseModelを継承しておく

  @PrimaryKey // 少なくとも一つ必要 // データの更新、削除、追加の時の比較に使用されるはず
  UUID id; 

  @Column // カラム定義(PrimaryKeyの場合は省略できる)
  String name;

  @Column(defaultValue = "20")//デフォルト値を設定できる
  int age;

  private String nickName; //privateで定義するときは必ずgetterとsetterを用意する。(*3)

  public void setNickName(String nickName) {
    this.nickName = nickName;

  public String getNickName() {
    return nickName;

*2 ここでアノテーションつけてname=データベース名,を指定すると、ビルド時に<クラス名>_Tableクラスが作成される。
*3 <クラス名>_Tableでgetterとsetterメソッドが使用される。booleanの場合はis<変数名>とset<変数名>でメソッドの定義をする。

○ 使用例

User user = new User(); = UUID.randomUUID(); = "Andrew Grosner";
user.age = 27;

// BaseModelを継承しているテーブルなら、これらのメソッドが使用可能になる
user.insert(); //DBにデータ追加
user.update(); //DBのデータ更新
user.delete(); //DBのデータ削除; //DBにデータ追加,存在していたらデータ更新

// select文
List<User> users =

(参考資料) 公式HP 【Android】DBFlowの基本的な使い方

はじめまして、まだまだ新米のエンジニアです。基本的なことを黙々と忘れないように記録していきたいと思っています。ゆるく見守ってください。○落ちてくるものすべてタップ[android] [iOS]
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away