DBFlow優(yōu)點介紹
DBFlow的設(shè)計吸取了其他很多ORM框架中好的特征,并將之做得更好把敢。它很靈活钞楼,讓你能更專注于App中真正需要關(guān)注的地方。不要讓一個ORM庫限制了你的思維蒸眠,而是讓代碼在你的App中工作得更好漾橙。
擴展性: ORM所需的數(shù)據(jù)類只需要實現(xiàn)Model接口即可,而不需要必須繼承一個類黔宛,同時為了方便近刘,我們還是推薦繼承BaseModel擒贸,這是Model接口的一個標(biāo)準(zhǔn)實現(xiàn)。這樣你既可以通過繼承一個來自其他包的非Model類來生成你的數(shù)據(jù)庫表觉渴,也可以通過繼承一個Model類并通過添加@Column注解的屬性向表中自由添加列介劫。這一切都是為了方便你的使用。
速度:DBFlow基于AnnotationProcessing(注解處理器)案淋,通過編譯期代碼生成座韵,運行時對性能是零損耗的。通過模板來為你維護生成的代碼踢京。通過緩存和盡可能地重用對象誉碴,我們得到了比原生SQLite更快的速度。同時我們還支持懶加載(lazy-loading)瓣距,比如對于@ForeignKey和@OneToMany黔帕,這使得我們有著更高效得查詢效率
SQLite查詢流(SQLite Query Flow):
DBFlow的查詢語法盡可能地和SQL語句相似门驾,使您能更快上手骤菠。select(name,
screenSize).from(Android.class).where(name.is(“Nexus
5x”)).and(version.is(6.0)).querySingle()
開源: 整個DBFlow庫都是開源的冗栗,而且也非常歡迎大家來為這個庫貢獻自己的力量燎字。 Robust:
我們支持Trigger,ModelView,Index,Migration,所有的數(shù)據(jù)庫操作都在同一個線程(線程安全)沮趣,還有其他特性怔球。
多數(shù)據(jù)庫塔猾、多表單: 我們無縫支持多數(shù)據(jù)庫文件环础,database modules using DBFlow in other
dependencies, simultaneously. 基于SQLite:
SQLite是世界上使用最廣泛的數(shù)據(jù)庫引擎荸百,基于SQLite的DBFlow使你不需要被限制在某些平臺上闻伶。
特性:
1、無縫支持多個數(shù)據(jù)庫够话;
2蓝翰、使用annotation processing提高速度;
3更鲁、ModelContainer類庫可以直接解析像JSON這樣的數(shù)據(jù)霎箍;
4、增加靈活性的豐富接口澡为。
1.配置
在項目目錄的build.gradle中加入:
allprojects {
repositories {
...
// required to find the project's artifacts
maven { url "https://www.jitpack.io" }
}
}
dependencies {
...
classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8'
}
在工程目錄的build.gradle中加入:
apply plugin: 'com.neenbedankt.android-apt'
def dbflow_version = "4.0.0-beta5"
dependencies {
annotationProcessor "com.github.Raizlabs.DBFlow:dbflow-processor:${dbflow_version}"
// use kapt for kotlin apt if you're a Kotlin user
apt "com.github.Raizlabs.DBFlow:dbflow-processor:${dbflow_version}"
compile "com.github.Raizlabs.DBFlow:dbflow-core:${dbflow_version}"
compile "com.github.Raizlabs.DBFlow:dbflow:${dbflow_version}
2.使用
首先在自定義Application中初始化
public class myApplication extends Application{
@Override
public void onCreate() {
super.onCreate();
FlowManager.init(new FlowConfig.Builder(this).build());
}
1.創(chuàng)建數(shù)據(jù)庫
@Database(name = DBFlowDatabase.NAME, version = DBFlowDatabase.VERSION)
public class DBFlowDatabase {
//數(shù)據(jù)庫名稱
public static final String NAME = "DBFlowDatabase";
//數(shù)據(jù)庫版本號
public static final int VERSION = 1;
}
2.創(chuàng)建Model
import com.raizlabs.android.dbflow.annotation.Column;
import com.raizlabs.android.dbflow.annotation.ModelContainer;
import com.raizlabs.android.dbflow.annotation.PrimaryKey;
import com.raizlabs.android.dbflow.annotation.Table;
import com.raizlabs.android.dbflow.structure.BaseModel;
@ModelContainer //表示可以直接解析JSON
@Table(database = DBFlowDatabase.class)
public class UserModel extends BaseModel {
//自增ID
@Column
@PrimaryKey(autoincrement = true)
public Long id;
@Column
public String name;
@Column
public int sex;
}
必須繼承BaseModel漂坏,BaseModel包含了基本的數(shù)據(jù)庫操作(save、delete媒至、update顶别、insert、exists)
一個正確的數(shù)據(jù)表類需要以下幾項: 對類添加@Table注解 聲明所連接的數(shù)據(jù)庫類拒啰,這里是DBFlowDatabase驯绎。 定義至少一個主鍵。
這個類和這個類中數(shù)據(jù)庫相關(guān)列的修飾符必須是包內(nèi)私有或者public谋旦。 這樣生成的_Adapter類能夠訪問到它剩失。 NOTE:
列(Column)屬性可以是private屈尼,但這樣就必須指定公有public的getter和setter方法。
創(chuàng)建完成后拴孤,需要編譯一下脾歧,點擊編譯按鈕,或者Build->Make Project即可演熟,它會自動生成一些數(shù)據(jù)庫文件鞭执,也會提示你創(chuàng)建是否有誤!
3.增刪改查
UserModel people = new UserModel();
people.name = "張三";
people.sex = 1;
people.save();//添加對象芒粹,一條一條保存
//people.update();//更新對象
//people.delete();//刪除對象
多對多關(guān)系:
@Table(database = DBFlowDatabase.class)
@ManyToMany(referencedTable = UserModel.class)
public class MediaModel extends BaseModel {
加入ManyToMany注解后build兄纺,會自動生成中間表,但關(guān)系還是需要自己手動維護
一對一化漆,一對多估脆,多對多關(guān)系:http://www.reibang.com/p/e875b16283c6
官方文檔:https://github.com/Raizlabs/DBFlow/blob/master/usage2/Intro.md
DBFlow使用手冊:https://yumenokanata.gitbooks.io/dbflow-tutorials/content/sql_wrapper_classes.html
原文:http://blog.csdn.net/qq_16131393/article/details/50932020
參考:http://blog.sina.com.cn/s/blog_5d911a3f0101pwiq.html