概述
DBFlow是一个基于AnnotationProcessing(注解处理器)的强大、健壮同时又简单的ORM框架。效率紧跟greenDAO其后。基于注解,使用apt技术,在编译过程中生成操作类,使用方式和ActiveAndroid高度相似,使用简单。
导入DBFlow依赖
// DBFlow 数据库版本
def dbflow_version = "4.1.1"
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'com.android.support:appcompat-v7:26.1.0'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.1'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1'
// DBFlow
annotationProcessor "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}"
compile "com.github.Raizlabs.DBFlow:dbflow-sqlcipher:${dbflow_version}"
}
说明:这里是基本的使用依赖,如果需要kotlin、RXJava支持请到官网添加依赖。具体版本到官网查看。
初始化数据库
在application 的oncreat里面初始化
// 初始化数据库
FlowManager.init(this);
创建数据库
@Database(name = AppDatabase.NAME, version = AppDatabase.VERSION)
public class AppDatabase {
// 数据库名称
public static final String NAME = "AppDatabase";
// 数据版本
public static final int VERSION = 1;
}
说明:创建一个数据库类,以基于注解的形式定义数据库名称和版本。
数据转换
@com.raizlabs.android.dbflow.annotation.TypeConverter
public class JSONConverter extends TypeConverter<String, JSONArray> {
@Override
public String getDBValue(JSONArray model) {
return model == null ? null : model.toString();
}
@Override
public JSONArray getModelValue(String data) {
JSONArray jsonArray = null;
try {
jsonArray = new JSONArray(data);
} catch (JSONException e) {
e.printStackTrace();
}
return jsonArray;
}
}
创建表
@Table(database = AppDatabase.class)
public class UserEntity {
@PrimaryKey(autoincrement = true)
public int dbid;
@Column
public String icon;
public int getDbid() {
return dbid;
}
public void setDbid(int dbid) {
this.dbid = dbid;
}
public String getIcon() {
return icon;
}
public void setIcon(String icon) {
this.icon = icon;
}
}
说明:每张表的数据都有一个id主键,设置为自增长,数据库字段用@Column注解
数据库操作
//添加到数据库
ModelAdapter<UserEntity> modelAdapter = FlowManager.getModelAdapter(UserEntity.class);
modelAdapter.insert(userEntity);
//删除数据
ModelAdapter<UserEntity> modelAdapter = FlowManager.getModelAdapter(UserEntity.class);
modelAdapter.delete(userEntity);
//查询单个数据
UserEntity data = SQLite.select().from(UserEntity.class).where(UserEntity_Table.dbid.eq(1)).querySingle();
//查询全部数据
List<UserEntity> list = SQLite.select().from(UserEntity.class).queryList();
说明:每次修改表字段后在Bulid中的Make Project执行以下,如果app版本更新时修改了数据库就需要修改数据库版本,否则数据库会报错。 到此就已经成功实现DBFlow的简单操作了。感兴趣的可以去官方教程查看(上面贴了链接)。以后相关项目将会使用DBFlow,有相关深入将继续总结。