基本配置
在app Module中引入依赖compile 'de.greenrobot:greendao:2.0.0'
新建一个Java Module。
在这个Module中引入代码生成依赖compile 'de.greenrobot:greendao-generator:2.0.0'
生成代码
这里需要一个Schema
对象作为数据库根节点。
Schema schema = new Schema(1, "gavinhua.demo.db");
构造函数需要传入两个参数,第一个是数据库版本号,第二个是生成的代码中的包名。
// 添加一张表
Entity user = schema.addEntity("User");
// 添加id字段,主键,自动增量
user.addIdProperty().primaryKey().autoincrement();
// 添加类型为String的字段,不能为空
user.addStringProperty("name").notNull();
user.addStringProperty("pass");
user.addIntProperty("age");
// 支持一对一
user.addToOne(Entity target, Property fkProperty);
// 支持一对多
user.addToMany(Entity target, Property targetProperty);
调用生成代码的方法
// 第二个参数是代码生成存放的路径
new DaoGenerator().generateAll(schema, "../Demo/app/src/main/java");
OK,db目录下多了4个类,代码成功生成。
简单使用
先说一下这几个类的关系。
DaoMaster
负责创建会话DaoSession
,每张表对应的Dao
对象实例又是从DaoSession
中获取的。
// 由DaoMaster的子类可已很容易的创建数据库连接
SQLiteDatabase db = new DaoMaster.DevOpenHelper(this, "db_name", null).getWritableDatabase();
DaoMaster daoMaster = new DaoMaster(db);
DaoSession daoSession = daoMaster.newSession();
// 可以从daoSession中获取到每个DAO对象,DAO中封装了操作数据的方法。
UserDao userDao = daoSession.getUserDao();
// 插入一条数据
userDao.insert(user);
// 插入一组数据
userDao.insertInTx();
// 删除数据
userDao.delete();
// 删除一组数据
userDao.deleteInTx();
// 查询所有
userDao.loadAll()
// 条件查询,使用where,返回一组数据
userDao.queryBuilder().where(UserDao.Properties.Name.eq("admin1")).list();
// 更新数据
userDao.updateInTx();
...
Dao
中提供的方法很全,完全能给满足开发的需求。
总结
greenDAO能够满足Android对于数据操作的需求,并且在多个类似工具的比对中,它是非常优秀的。所以推荐大家使用。