DBFlow 初步使用

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 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的初步介绍

你可能感兴趣的:(DBFlow 初步使用)