参考:https://www.jianshu.com/p/9fe0e179f5bf
https://blog.csdn.net/imsunlight/article/details/79020874
1. 在gradle中添加 DBFlow的依赖
2. 在Application中 初始化
FlowManager.init(this);
3. 注意将Manifest中的application设置为初始化时使用的application
4. 创建数据库
// 使用注解声明数据库名和版本号 // 将其作为静态常量放在类中 @Database(name = AppDataBase.NAME,version = AppDataBase.VERSION) public class AppDataBase { public static final String NAME="AppDataBase"; public static final int VERSION=1; }
5.创建表
// 用注解标明是数据库表,属于哪个数据库
// 成员变量前@Column 表示列
// 当前列继承 BaseModel,便于之后的使用
@Table(database = AppDataBase.class) public class User extends BaseModel { @PrimaryKey(autoincrement = true) private int id; @Column private String name; @Column private int age; @Column private long timeStamp; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public long getTimeStamp() { return timeStamp; } public void setTimeStamp(long timeStamp) { this.timeStamp = timeStamp; } }
DBFlow 的CRUD操作非常便利
对一个User实例进行操作 , 有两种方式:
(1) 用Adapter进行操作
ModelAdapter<User> adapter = FlowManager.getModelAdapter(User.class); adapter.save(user);
adapter.update(user);
adapter.delete(user);
(2) 如果表对应类继承了BaseModel 则可以直接操作
user.save();
user.update();
user.delete();
使用SQLite批量操作 查询: User user1 = SQLite.select() .from(User.class) // 要查的表对应类 .where(User_Table.id.eq(1)) // User_Table为DBFLow自动生成的类,在编译过程中生成 .querySingle(); // 返回一条数据
删除: SQLite.delete() .from("表对应的类") .where("条件") .query(); //要删除整张表,可以使用: Delete.table(User.class); 更新: SQLite.update(User.class) .set(User_Table.name.eq("DIO"),User_Table.age.eq(500)) .where(User_Table.id.eq(user.id)) .query();
在使用SQLite进行查询操作时,可以添加链式操作如:
.orderBy() //设置排序方式
.limit() // 限定最多查询数目
.async() // 进行异步查询
还有对返回查询列表进行操作的回调接口 :
.queryListResultCallback(//此处放入QueryResultListCallback接口)
.execute();
如果要增加表,创建完对应的类之后,还要修改Appdatabase的版本号,如果不修改,则会有 no such table 错误
DBFlow : https://github.com/agrosner/DBFlow
https://agrosner.gitbooks.io/dbflow/content/