什么是DBFlow窘问?
Raizlabs公司開發(fā)的ORM(Object-relational mapping)庫。
DBFlow是一種使用注解(@~
)來進(jìn)行表單的定義等數(shù)據(jù)庫處理话侄,并將這些處理簡(jiǎn)化的安卓數(shù)據(jù)庫框架。
DBFlow最出名的就是它的處理速度
※Raizlabs公司發(fā)布的処理速度比較結(jié)果
Results
DBFlow的導(dǎo)入
導(dǎo)入方法、使用方法官方文檔
DBFlow的導(dǎo)入需要做以下修改
- build.gradle(Project)
dependencies內(nèi)添加以下內(nèi)容杨赤。
dependencies {
classpath 'com.neenbedankt.gradle.plugins:android-apt:1.7'
}
- 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"
}
DBFlow的使用方法
使用DBFlow需要追加2~3個(gè)新類敞斋。
- DBFlow初期化類(MyAppilcation.java)
- 數(shù)據(jù)庫宣言類(AppDatabase.java)
- 表格宣言類(User.java)
DBFlow初期化
用FlowManager.init(this)
初期化。
public class MyApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
FlowManager.init(this);
}
}
不要忘記AndroidManifest.xml里application標(biāo)簽的追加疾牲。
<application
android:name=".MyApplication" />
</application>
數(shù)據(jù)庫的定義
@Database(name = AppDatabase.NAME, version = AppDatabase.VERSION)
public class AppDatabase {
public static final String NAME = "AppDatabase";
public static final int VERSION = 1;
}
表格的定義
注解
屬性(列)@Column
植捎、主鍵(Primary Key)@PrimaryKey
@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;
}
查詢語句的書寫
- Insert文
User user = new User();
user.name = "takenoki";
user.age = 20;
user.insert();
- Select文
select NAME from USER_TABLE where NAME = "takenoki";
上面的SQL文在DBFlow里用使用以下語句。
List<User> list = new Select()
.from(User.class)
.where(Condition.column(User$Table.NAME).is(name))
.queryList();
想取名和年齡都一致的數(shù)據(jù)的話
List<User> list = new Select()
.from(User.class)
.where(
Condition.column(User$Table.NAME).is(name),
Condition.column(User$Table.AGE).is(age)
)
.queryList();
結(jié)果放在listView里表示的時(shí)候
@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;
}