欢迎来到安卓本地轻量级数据库操作框架 greenDao3.2.2 学习之旅。
本套框架博客系列博客目录:
最近一个月在忙做视频,没时间更新我们的greendao教程了。作为替代传统数据库的grendao,其访问速度是不可估量的,而且使用起来方便轻捷。下面的教程部分源于各大神的灵感,结合自己所了解、加上官方文档的说明书。详细地给大家熟透一遍, 包你吃个“藕瓜烂熟”。
一、认识 DevOpenHelper和DaoSession ;
1.1 DevOpenHelper:
- 按照我的理解,这个和我们之前传统的方式也是需要一个操作类继承 SQLiteOpenHelper 来帮助我们打开数据库。那么这个DevOpenHelper也是一个操作类。
- 之前的方式这样写的:
public class MyDatabaseHelper extends SQLiteOpenHelper {
//创建一个名字叫“Book”表名
public static final String CREATE_BOOK = "create table Book ("
+ "id integer primary key autoincrement, "
+ "author text, "
+ "price real, "
+ "pages integer, "
+ "name text)";
//创建一个名字叫“Category”表名
public static final String CREATE_CATEGORY = "create table Category ("
+ "id integer primary key autoincrement, "
+ "category_name text, "
+ "category_code integer)";
private Context mContext;
//构造方法里面传的是我们的数据库名字。
public MyDatabaseHelper(Context context, String name,
SQLiteDatabase.CursorFactory factory, int version) {
super(context, name, factory, version);
mContext = context;
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(CREATE_BOOK);
db.execSQL(CREATE_CATEGORY);
Toast.makeText(mContext, "Create succeeded", Toast.LENGTH_SHORT).show();
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("drop table if exists Book");
db.execSQL("drop table if exists Category");
onCreate(db);
}
}
- 现在我们回到我们的DevOpenHelper,下面我们看看其源码:这里显示是继承OpenHelper,而OpenHelper是继承DatabaseOpenHelper,再点击进去看看, 最终也是继承我们的 SQLiteOpenHelper!!所以和我们传统的方式,大家可以理解是一个操作类。
1.2 认识DaoSession会话。
- 通过 DaoSession 我们可以操作一个数据库里面的表的增删查改操作,对于DaoSession ,官方如是这样说,但是在我们3.2.2版本可以另外一个获取方法。
DaoMaster.DevOpenHelper devOpenHelper = new DaoMaster.DevOpenHelper(MyApplication.getContext(), "user.db", null);//此处为自己需要处理的表
mDaoMaster = new DaoMaster(devOpenHelper.getWritableDatabase());
mDaoSession = mDaoMaster.newSession();
- 获取到了DaoSession,就可以轻松操作任何数据库的表了。
//增
public void btnAdd(View view) {
User user = new User();
user.setName("张三");
user.setAge(23);
user.setSex("女");
DBManager.getmInstance().getSession().getUserDao().insert(user);
}
//删
public void btnDelete(View view) {
DBManager.getmInstance().getSession().getUserDao().deleteAll();
//DBManager.getmInstance().getSession().getUserDao().delete(user);//根据一个user对象删除
}
//查
public void btnQuery(View view) {
List<User> users = DBManager.getmInstance().getSession().getUserDao().loadAll();
beanList.clear();
if (users.size()>=0){
mUser=users.get(0);
}
for (int position = 0; position < users.size(); position++) {
beanList.add(new Bean(users.get(position).getName(), users.get(position).getSex(), users.get(position).getAge()));
}
Adapter.notifyDataSetChanged();
}
//改
public void btnAlter(View view) {
//根据一个实体来修改年龄
mUser.setAge(66);
DBManager.getmInstance().getSession().getUserDao().update(mUser);
}
具体的看看代码吧:https://github.com/xuhongv/GreenDaoD