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
2.初始化DBFlow
初始化DBFlow的操作,放在可全局的Applaction中,记得要在AndroidManifest配置
初始化DBFlow的操作,放在可全局的Applaction中,记得要在AndroidManifest配置
如图
FlowManager.init(this);
3. 创建数据库:
3. 创建数据库:
1)数据库创建
1)数据库创建
2)创建数据库表:
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.数据库操作:
4.数据库操作:
1)增
1)增
UserModel people = new UserModel();
people.name = “fff”;
people.sex = 1;
people.save();
//people.update();//更新对象
//people.delete();//删除对象
//people.insert();//插入对象;
2)查
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)删
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) 改
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)运行结果如下:
5.数据库升级
5.数据库升级
1)添加新表
1)添加新表
只需将数据库版本号修改即可,不修改版本号怎不会生成该表结构
2)对原来的表增加一个字段,(比如在UserModel中添加一个address字段,操作如下)
2)对原来的表增加一个字段,(比如在UserModel中添加一个address字段,操作如下)
1.修改版本号,如上
1.修改版本号,如上
2.修改对象表结构,添加address字段
2.修改对象表结构,添加address字段
3.build->Make Project更新表结构,然后编写Migration类
3.build->Make Project更新表结构,然后编写Migration类