Android 数据库DbFlow的使用
为什么要使用DbFlow
DBFlow的设计吸取了其他很多ORM框架中好的特征,并将之做得更好。它很灵活,让你能更专注于App中真正需要关注的地方。不要让一个ORM库限制了你的思维,而是让代码在你的App中工作得更好。
使用步骤:
1.引入DBflow库,github地址 github.com/Raizlabs/DB…
- 添加仓库托管地址
allProjects {
repositories {
// required to find the project’s artifacts
maven { url “www.jitpack.io” }
}
}
-
在moudel的build.gradle中添加
def dbflow_version = "4.2.4" annotationProcessor "com.github.Raizlabs.DBFlow:dbflow-processor:${dbflow_version}" compile "com.github.Raizlabs.DBFlow:dbflow-core:${dbflow_version}" compile "com.github.Raizlabs.DBFlow:dbflow:${dbflow_version}"
2.代码中使用
-
在Application中初始化Dbflow
public class App extends Application{ @Override public void onCreate() { super.onCreate(); FlowManager.init(this); } } - 创建一个数据库
@Database(name = AppDataBase.NAME, version = AppDataBase.VERSION)
public class AppDataBase {
public static final String name = "dbflowDataBase";
public static final int VERSION = 1;
}
- 创建表
@Table(database = AppDatabase.class)
public class User extends BaseModel {
@PrimaryKey(autoincrement = true)
public long id;
@Column
public String name;
@Column
public int age;
public void insertData(String name,int age){
this.name=name;
this.age = age;
}
}
- 保存一条数据
User mUser = new User();
String name = mEtName.getText().toString();
String age = mEtAge.getText().toString();
mUser.insertData(name, Integer.parseInt(age));
// dbflow 保存数据
boolean save = mUser.save();
Toast.makeText(this, save ? "保存成功" : "添加失败", Toast.LENGTH_SHORT).show();
- 查询数据
List<User> users = SQLite.select().from(User.class).queryList();// 查询所有记录
User user = SQLite.select().from(User.class).querySingle();// 查询第一条记录
- 删除数据
在where中可以添加删除条件,比如删除id等于1的,或者名字为张三的等等 都可以:
SQLite.delete()
.from(User.class)
.where(User_Table.id.eq(1))
.query();
如果删除整个表,可以这样:
Delete.table(User.class);
- 修改某条数据
例如删除名字叫小王,年龄为20的:
SQLite.update(User.class)
.set(User_Table.name.eq("小王"),User_Table.age.eq(20))
.where(User_Table.id.eq(user.id))
.query();
ok,Dbflow的增删改查方法就这么简单,也很好记忆,因为DBFlow的查询语法尽可能地和SQL语句相似,能更快上手,这也是我为什么要使用它的一个原因。除此之外,dbflow还有多表关联的知识,比如一对一,一对多,多对多等等,这些可以查看文档agrosner.gitbooks.io/dbflow/cont…
另外我写了一个demo,效果如下:
提供demo的地址:
github下载 github.com/ge194463383…
csdn下载 download.csdn.net/download/im…
录制的一个小视频:v.youku.com/v_show/id_X…
