LoginSignup
2
3

More than 5 years have passed since last update.

DBFlowの使い方(Androidライブラリ)

Last updated at Posted at 2017-05-17

○ 事前準備として

データベース定義クラス作成

AppDatabase.java
@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クラスが作成される。

テーブル定義クラス作成

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

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

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

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

  @Column
  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();
user.id = UUID.randomUUID();
user.name = "Andrew Grosner";
user.age = 27;

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

// select文
List<User> users = SQLite.select()
                    .from(User.class)
                    .where(User_Table.age.greaterThan(18))
                    .queryList();

(参考資料)
https://agrosner.gitbooks.io/dbflow/content/ 公式HP
http://chocolattips.hatenablog.com/entry/2017/01/31/000000 【Android】DBFlowの基本的な使い方

2
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
3