关于GreenDao的使用

1、添加依赖(目前是最新版本)

compile'org.greenrobot:greendao:3.2.0'
compile'org.greenrobot:greendao-generator:3.2.0'
2、在项目的app中的build.grade中添加
apply plugin: 'org.greenrobot.greendao'

greendao {
    //数据库的schema版本,也可以理解为数据库版本号
    schemaVersion 4
    //设置DaoMaster、DaoSession、Dao包名,也就是要放置这些类的包的全路径。
    daoPackage 'cn.hnshangyu.testgreendao.greendao'
    //设置DaoMaster、DaoSession、Dao目录
    targetGenDir 'src/main/java'
}
dependencies {
    compile 'org.greenrobot:greendao:3.2.0'
}
3、在项目的project中的build.grade中添加
4、准备工作已完成,接下来就是使用了
首先定义一个对象,给一些字段
@Entity
public class Student {
    @Id
    private Long id;
    private String name;
    private String couse;
    private int mathSoucre;
    private int englishSouce;
    private int chinaSouce;
}
点击编译,这个时候AS会自动生成下面对数据库的操作类,以及补全Student类中属性的get和set方法

然后一般在MyApplication中对数据库进行一些初始化设置
public class MyApplication extends Application {
    private DaoMaster.DevOpenHelper mHelper;
    private SQLiteDatabase db;
    private DaoMaster mDaoMaster;
    private DaoSession mDaoSession;
    public static MyApplication instances;
    @Override    public void onCreate() {
        super.onCreate();
        instances = this;
        setDatabase();
    }
    public static MyApplication getInstances(){
        return instances;
    }

    /**
     * 设置greenDao
     */
    private void setDatabase() {
        // 通过 DaoMaster 的内部类 DevOpenHelper,你可以得到一个便利的 SQLiteOpenHelper 对象。
        // 可能你已经注意到了,你并不需要去编写「CREATE TABLE」这样的 SQL 语句,因为 greenDAO 已经帮你做了。
        // 注意:默认的 DaoMaster.DevOpenHelper 会在数据库升级时,删除所有的表,意味着这将导致数据的丢失。
        // 所以,在正式的项目中,你还应该做一层封装,来实现数据库的安全升级。
        mHelper = new DaoMaster.DevOpenHelper(this, "notes-db", null);
        db = mHelper.getWritableDatabase();
        // 注意:该数据库连接属于 DaoMaster,所以多个 Session 指的是相同的数据库连接。
        mDaoMaster = new DaoMaster(db);
        mDaoSession = mDaoMaster.newSession();
    }
    public DaoSession getDaoSession() {
        return mDaoSession;
    }
    public SQLiteDatabase getDb() {
        return db;
    }
}
之后就可以直接来对数据库进行操作了
对数据库进行插入操作
Student student = new Student((long)1,"chen","chinese",50,60,70);
StudentDao mDao = MyApplication.getInstances().getDaoSession().getStudentDao();
mDao.insertOrReplace(student);
在这里要注意一下,插入操作也可以使用吗Dao.insert(student),但是这个时候如果你的主键ID是重复的话就会抛出异常,所以建议还是使用mDao.insertOrReplace(student)来操作。
在使用的过程中,你突然想再增加一张表或者是一个字段,这个时候,你依然只是需要增加字段或者一个对象,然后编译,AS会自动补全对应的对这个表或字段的操作方法,不需要你去关心,个人在使用的时候,增加字段,再去运行这个时候是会抛出异常的,说你新加的字段或者表不存在,这个时候你就需要去更新数据库的版本了,也就是build.grade中的schemaVersion 4,这个时候就不会再有这个异常了。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值