○ 事前準備として
データベース定義クラス作成
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の基本的な使い方