在项目的build.gradle中添加
compile 'de.greenrobot:greendao:2.1.0'
下载DaoGenerator项目,打开DaoGenerator项目
public static void main(String args[]) throws Exception {
Schema schema = new Schema(1, "com.green.bean");
schema.setDefaultJavaPackageDao("com.green.dao");
initStudent(schema);
new DaoGenerator().generateAll(schema, args[0]);
}
private static void initStudent(Schema schema) {
Entity student = schema.addEntity("Student");
student.addIntProperty("id").primaryKey().index();
student.addStringProperty("name");
student.addIntProperty("age");
student.addStringProperty("hobby");
}
DaoGenerator的build.gradle中修改输出目录
def outputDir = "../app/src/main/java-gen"
运行即可生成相应java文件
new Schema()第一个参数是数据库版本,第二个参数是bean的包名
setDefaultJavaPackageDao 设置dao的包名
可以在生成的java文件中加入自己的代码或者改写,当设置了schema.enableKeepSectionsByDefault 的时候
用//KEEP METHODS注释再下次更新的时候将保留代码块
DaoMaster:
DaoMaster.DevOpenHelper helper = new DaoMaster.DevOpenHelper(this, "notes-db", null); db = helper.getWritableDatabase(); // 注意:该数据库连接属于 DaoMaster,所以多个 Session 指的是相同的数据库连接。 daoMaster = new DaoMaster(db); daoSession = daoMaster.newSession();首先要创建daomaster,用daomaster创建session
创建daomaster要db,db可以用daomaster.DevOpenHelper生成,执行new DaoMaster.DevOpenHelper就会创建数据库,第二个参数是数据库名字,里面的版本号是Generator中写的,当然可以改。也可以自己写DbOpenHelper。
Daoseesion可以获取不同的dao,在Generator中添加了那些表,就有哪些dao。
例如StudentDao
StudentDao:
StudentDao.count 当前表中数据个数
添加:
StudentDao.insert(student)
StudentDao.insertorreplace(student) 如果有这个主键替换没有添加
查找:
查找返回格式为 List<Student>
StudentDao.loadAll() 查询全表数据
QueryBuilder builder = StudentDao.queryBuilder().where();where中为查询条件:where中参数为可变参数,可以放多个条件,多个where可以用and or 连接
Properties.列名.eq(匹配)/isNotNull(不为空)/isNull(为空)/between(在两者之间)/like(相似)/ in(在什么中?) 还有一些其他的。。。。 QUeryBuilder: 这个是管理查找的,可以将查找到的数据列出来,也可以删除
list() 返回数据 List<Student>build() 返回Query<Student>
-----Query.list 返回数据,除了这个基本的还有一些高级用法
buildDelete() 返回DeleteQuery<Student>------DeleteQuery.executeDeleteWithoutDetachingEntities 将查询到的符合条件的删除
buildCount() 返回CountQuery<Student>-------CountQuery.count 返回查询到的数量
buildCursor() 返回CursorQuery<Student>
--------CursorQuery.query 返回Cursor 返回系统的Cursor
删除:
StudentDao.deleteAll 删除全表
StudentDao.delete(Student)---|
StudentDao.deleteByKey------|---这两个都要key对应才行,一般根据条件删除 用QueryBuilder