博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

欢迎来到安卓本地轻量级数据库操作框架 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