DBFlow框架的使用

一、配置DBFlow插件

  • 1.在项目的build.gradle中添加

// Top-level build file where you can add configuration options common to all sub-projects/modules.

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:2.3.1'
        //添加下面这行代码
        classpath 'com.neenbedankt.gradle.plugins:android-apt:1.4'
        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

allprojects {
    repositories {
        jcenter()
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}
  • 2.在当前model的build.gradle中添加
apply plugin: 'com.android.application'
apply plugin: 'com.neenbedankt.android-apt'//这行代码

android {
    compileSdkVersion 25
    buildToolsVersion "25.0.2"

    defaultConfig {
        applicationId "com.example.dbflow"
        minSdkVersion 16
        targetSdkVersion 25
        versionCode 1
        versionName "1.0"

        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"

    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })
    compile 'com.android.support:appcompat-v7:25.3.1'
    compile 'com.android.support.constraint:constraint-layout:1.0.2'
    testCompile 'junit:junit:4.12'

    //下面这三行代码
    apt 'com.raizlabs.android:DBFlow-Compiler:2.2.1'
    compile "com.raizlabs.android:DBFlow-Core:2.2.1"
    compile "com.raizlabs.android:DBFlow:2.2.1"

}
  • 3 初始化
//自己定义MyApplication,在其onCreate方法中调用FlowManager.init(this)进行初始化
public class MyApplication extends Application {

    @Override
    public void onCreate() {
        super.onCreate();
        FlowManager.init(this);
    }
}
    <application
        android:name=".MyApplication"/>

二、使用

  • 1 创建数据库

@Database(name = MyDbflowData.NAME, version = MyDbflowData.VERSION)
public class MyDbflowData {
    //数据库名称
    public static final String NAME = "MyDbflowData";
    //数据库版本号
    public static final int VERSION = 1;
}
  • 2 创建javabean对象

在DBFlow中,每个与数据库连接的ORM对象类都必须继承Model接口。这是为了确保这些对象都能有相同的一些方法。通常为了方便我们继承BaseModel类,这个类也是Model的标准实现。

一个正确的数据表类需要以下几项:

对类添加@Table注解
声明所连接的数据库类,这里是ColonyDatabase。
定义至少一个主键。
这个类和这个类中数据库相关列的修饰符必须是包内私有或者public。
这样生成的_Adapter类能够访问到它。

NOTE: 列(Column)属性可以是private,但这样就必须指定公有public的getter和setter方法。


/**
 * 必须继承BaseModel,BaseModel包含了基本的数据库操作
 * (save、delete、update、insert、exists),可以发现这个表是关联上面定义的数据库
 * ,UserModel 的id是自增的id(autoincrement )。
 * Created by afinalstone on 17-4-24.
 */
@ModelContainer
@Table(database = MyDbflowData.class)
public class UserBean extends BaseModel {
    //用户ID编号
    @Column
    @PrimaryKey(autoincrement = true)
    public long userId;
    //用户姓名
    @Column
    public String userName;
    //用户年龄
    @Column
    public int age;
    //用户性别,男为true
    @Column
    public boolean sex;

    @Override
    public String toString() {
        return "UserBean{" +
                "userId=" + userId +
                ", userName='" + userName + '\'' +
                ", age=" + age +
                ", sex=" + sex +
                '}';
    }
}

创建userBean之后,我们Make project,如果有错误会提示我们,如果没有错误编译成功,将会自动创建一些数据库文件

  • 3 具体增删改差
public class MainActivity extends AppCompatActivity {
    UserBean userBean;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    public void onClick(View view) {

        switch (view.getId()) {
            //添加
            case R.id.singObjectAdd:
                userBean = new UserBean();
                userBean.userName = "李白";
                userBean.age = (int) (Math.random() % 100);
                userBean.sex = true;
                userBean.save();
                break;
            //修改
            case R.id.singObjectUpdate:
                if (userBean != null) {
                    userBean.userName = "李小画";
                    userBean.age = 22;
                    userBean.sex = false;
                    userBean.update();
                }
                break;
             //查询
            case R.id.singObjectSelect:
                if (userBean != null) {
                    UserBean bean = new Select().from(UserBean.class).querySingle();
                    System.out.println(bean);
                }
                break;
             //删除   
            case R.id.singObjectDelete:
                if (userBean != null) {
                    userBean.delete();
                }
                break;
             //多对象查询   
            case R.id.mulObjectSelect:
                List<UserBean> list = new Select().from(UserBean.class).queryList();
                System.out.println(list);
                break;
             //多对象条件查询   
            case R.id.mulObjectSelectByWhere:
                List<UserBean> list2 = new Select().from(UserBean.class).where(
                        Condition.column(new NameAlias("userName")).is("李小画"),
                        Condition.column(new NameAlias("sex")).is(false)).queryList();
                System.out.println(list2);
                break;
        }
    }
}

三、官方文档

本文只是对dbflow的简单介绍和使用,写的并不完整,附上官方文档介绍:点我开始传送!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值