DBFlow学习

1. 环境配置

1)先倒入 apt plugin 库到你的classpath,以启用AnnotationProcessing(注解处理器):

在工程的build.gradle中的dependencies添加一下代码

如图:
这里写图片描述

添加代码如下:
classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8'

maven { url "https://jitpack.io" }

2)添加库到项目级别的build.gradle文件中了

如图

这里写图片描述

要复制的代码:

apply plugin: 'com.neenbedankt.android-apt'


apt 'com.github.Raizlabs.DBFlow:dbflow-processor:3.0.0-beta2'
compile "com.github.Raizlabs.DBFlow:dbflow-core:3.0.0-beta2"
compile "com.github.Raizlabs.DBFlow:dbflow:3.0.0-beta2"

// sql-cipher database encyrption (optional)
compile "com.github.Raizlabs.DBFlow:dbflow-sqlcipher:3.0.0-beta2"

2.初始化DBFlow

初始化DBFlow的操作,放在可全局的Applaction中,记得要在AndroidManifest配置

如图

这里写图片描述

FlowManager.init(this);

3. 创建数据库:

1)数据库创建

这里写图片描述

2)创建数据库表:

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

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

这里写图片描述

/**
 * Created by dell on 2016/8/29.
 */
@Table(database = DBFlowDatabase.class)
public class UserModel extends BaseModel {
    //必须继承BaseModel,BaseModel包含了基本的数据库操作(save、delete、update、insert、exists),
    // 可以发现这个表是关联上面定义的数据库

    //自增ID
    @Column
    @PrimaryKey(autoincrement = true)
    public Long id;
    @Column
    public String name;
    @Column
    public int sex;
}

创建完成后,需要编译一下,点击编译按钮,或者Build->Make Project即可,它会自动生成一些数据库文件,也会提示你创建是否有误!

4.数据库操作:

1)增

这里写图片描述
UserModel people = new UserModel();
people.name = “fff”;
people.sex = 1;
people.save();
//people.update();//更新对象
//people.delete();//删除对象
//people.insert();//插入对象;

2)查

这里写图片描述

//返回单个查询结果
UserModel user = new Select().from(UserModel.class).querySingle();

//查询所有
List peoples = new Select().from(UserModel.class).queryList();

/查询sex = 1,姓名为fff 的所有user
 List userModels = new Select().from(UserModel.class)
            .where(UserModel_Table.sex.eq(1))
            .and(UserModel_Table.name.eq("fff"))
            .queryList();

3)删

这里写图片描述

//                //删除全部
//                new Delete().from(UserModel.class).execute();
//
//                //按条件删除
//                Where where = new Delete().from(UserModel.class)
//                        .where(UserModel_Table.name.eq("fff"))
//                        .and(UserModel_Table.sex.eq(0));
//                where.execute();

                //第二种删除方式

//                删除所有
//                SQLite.delete(UserModel.class).execute();

                //按条件删除
                SQLite.delete(UserModel.class)
                        .where(UserModel_Table.name.eq("fff"))
                        .and(UserModel_Table.sex.eq(0)).execute();

4) 改

这里写图片描述

            SQLite.update(UserModel.class).set(UserModel_Table.name.eq("aaa"))
                    .where(UserModel_Table.sex.eq(0))
                    .and(UserModel_Table.name.eq("fff"))
                    .execute();

5)运行结果如下:

这里写图片描述

5.数据库升级

1)添加新表

只需将数据库版本号修改即可,不修改版本号怎不会生成该表结构

这里写图片描述

2)对原来的表增加一个字段,(比如在UserModel中添加一个address字段,操作如下)

1.修改版本号,如上

2.修改对象表结构,添加address字段

这里写图片描述

3.build->Make Project更新表结构,然后编写Migration类

这里写图片描述