为什么用DBFlow
DBFlow使用比较简单,正好自己项目要用到就学习下,基本没什么难度,DBFlow封装的很好了一些简单配置就可以使用,感觉没什么写的,不过要记录自己整个项目过程还是写一下吧.
简单3步就可以满足正常使用了
1.配置
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:2.0.0-beta6'
classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8'
}
}
allprojects {
repositories {
jcenter()
maven { url "https://jitpack.io" }//关键配置
}
}
apply plugin: 'com.android.application'
apply plugin: 'com.neenbedankt.android-apt'
def dbflow_version = "3.0.0-beta4"
android {
compileSdkVersion 23
buildToolsVersion "23.0.2"
defaultConfig {
applicationId "cn.taoweiji.dbflowexample"
minSdkVersion 14
targetSdkVersion 23
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
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的onCreate对DBFlow进行初始化
public class MyApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
FlowManager.init(this);
}
}
3.使用
定义数据库
@Database(name = AppDatabase.NAME, version = AppDatabase.VERSION)
public class AppDatabase {
//数据库名称
public static final String NAME = "AppDatabase";
//数据库版本号
public static final int VERSION = 1;
}
创建数据库对象
@ModelContainer
@Table(database = AppDatabase.class)
public class People extends BaseModel {
//自增ID
@PrimaryKey(autoincrement = true)
public Long id;
@Column
public String name;
@Column
public int gender;
}
完成后执行build->Make Project就可以生成
具体使用代码(下面代码可以直接运行看到效果,常规的增删改查,事务、批量保存)
public class DbActivity extends AppCompatActivity {
//绑定TextView
@BindView(R.id.test)
TextView test;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ButterKnife.bind(this);
}
@OnClick(R.id.test)
public void testt() {
add();
}
public void add() {
People people = new People();
people.gender = 1;
people.name = "w";
people.save();
Toast.makeText(this, String.valueOf(people.id), Toast.LENGTH_SHORT).show();
}
public void find() {
List<People> peoples2 = new Select().from(People.class).where(People_Table.gender.eq(1)).queryList();
String s = "";
for (int i = 0; i < peoples2.size(); i++) {
s =s+ "+"+ peoples2.get(i).name;
}
Toast.makeText(this, s, Toast.LENGTH_SHORT).show();
}
public void test() {
List<People> peoples = new ArrayList<>();
for (int i = 0; i < 10; i++) {
People people = new People();
people.name = "ww";
people.gender = 1;
peoples.add(people);
}
//实时保存,马上保存
new SaveModelTransaction<>(ProcessModelInfo.withModels(peoples)).onExecute();
//异步保存,使用异步,如果立刻查询可能无法查到结果
//TransactionManager.getInstance().addTransaction(new SaveModelTransaction<>(ProcessModelInfo.withModels(peoples))); }
}