DBflow是android 上使用的比较多的一个开源数据库,其特点是使用注解完成大部分内容的工作。以下是如何在Android 应用开发中使用dbflow,开发环境为Android Studio,语言为Java
项目中导入DBflow
-
首先在project的build.gradle中 添加jitpack.io,添加代码如下:
allProjects { repositories { google() maven { url "https://www.jitpack.io" } } }
-
在module的build.gradle的dependencies中添加dbflow的依赖
def dbflow_version = "4.2.4" dependencies { annotationProcessor "com.github.Raizlabs.DBFlow:dbflow-processor:${dbflow_version}" implementation "com.github.Raizlabs.DBFlow:dbflow-core:${dbflow_version}" implementation "com.github.Raizlabs.DBFlow:dbflow-rx:${dbflow_version}" implementation "com.github.Raizlabs.DBFlow:dbflow:${dbflow_version}" }
新建数据库和表
接下来开始构建数据库和表。首先创建数据库,代码如下:
import com.raizlabs.android.dbflow.annotation.Database;
@Database(name = PlanetPlanDB.name, version = PlanetPlanDB.version)
public class PlanetPlanDB {
public static final String name = "planetplan";
public static final int version = 1;
}
其中使用@Database注解定义数据库的名称和版本
接着创建一张表,代码如下
@Table(database = AppDatabase.class)
// 继承BaseModel可以基于User对象直接进行CRUD操作
public class User extends BaseModel {
@PrimaryKey // at least one primary key required
UUID id;
@Column
String name;
@Column
int age;
}
其中使用@Table 指定database的class为之前创建的database
要在Android App正常使用必须在Application中添加一下代码:
public class MyApp extends Application {
@Override
public void onCreate() {
super.onCreate();
// 添加该行代码
FlowManager.init(this);
}
}
以上就完成了表,数据库的创建,应用可以使用dbflow进行数据的CRUD操作了
数据的CRUD
对User的CRUD操作,代码如下:
User user = new User();
user.id = UUID.randomUUID();
user.name = "Andrew Grosner";
user.age = 27;
user.insert();// 插入user
user.update();// 更新user
user.delete();// 删除user
user.save(); // 保存user
// 查询user
List<User> users = SQLite.select()
.from(User.class)
.where(User_Table.age.greaterThan(18))
.queryList();
以上代码中:
-
save() 首先会判断数据库中是否存在user主键,如果存在则调用update(), 如果不存在则调用insert(). 该部分代码逻辑在com.raizlabs.android.dbflow.sql.saveable.ModelSaver中实现
-
User_Table为dbflow自动生成的类,继承了ModelAdapter类,主要实现对User对象的操作的sql语句等功能
-
where() 参数为SQLOperator对象,SQLOperator为接口,BaseOperator实现了该接口,com.raizlabs.android.dbflow.sql.language.Operator继承了BaseOperator, 其中有dbflow支持的operator操作
以上为DBFlow的初步介绍
网友评论