关于GreenDao的使用

来源:互联网 发布:淘宝免费申请 编辑:程序博客网 时间:2024/05/22 13:45

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、准备工作已完成,接下来就是使用了
首先定义一个对象,给一些字段
@Entitypublic 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,这个时候就不会再有这个异常了。

原创粉丝点击