[关闭]
@cxm-2016 2016-08-04T16:13:59.000000Z 字数 1964 阅读 2006

GreenDAO:Android Studio的基本配置

GreenDAO no
作者:陈小默


一、配置「GREENDAO GENERATOR」

1,在 .src/main 目录下新建一个与 java 同层级的「java-gen」目录,用于存放由 greenDAO 生成的 Bean、DAO、DaoMaster、DaoSession 等类。

2,配置 Android 工程(app)的 build.gradle

添加

  1. android{
  2. sourceSets {
  3. main {
  4. java.srcDirs = ['src/main/java', 'src/main/java-gen']
  5. }
  6. }
  7. }

使用gradle自行添加de.greenrobot:greendao:最新版本。

二、新建一个Module(Java Library)

1,使用gradle自行添加org.greenrobot:greendao-generator:最新版本

2,创建一个类,在main方法中创建数据库和数据表:

  1. package com.doservlet
  2. import org.greenrobot.greendao.generator.DaoGenerator
  3. import org.greenrobot.greendao.generator.Schema
  4. class MyGenerator
  5. fun main(args: Array<String>) {
  6. val schema = Schema(1, "com.cxm.bean")
  7. //下面这句话指定了到文件的存放位置,不设置的话默认情况同上
  8. schema.defaultJavaPackageDao = "com.cxm.dao"
  9. //这里创建了一个一张数据表,后续执行创建表的操作
  10. val note = schema.addEntity("Note")
  11. note.addIdProperty()
  12. note.addStringProperty("name").notNull()
  13. note.addDateProperty("birth").notNull()
  14. //以下操作寻找存放bean的目录
  15. var path = MyGenerator::class.java.getResource(".").getPath()
  16. path = path.substring(0, path.lastIndexOf("mydaogenerator/build/classes/main/com/doservlet/"))
  17. path += "app/src/main/java-gen"
  18. //将创建好的Bean以及Dao文件存放到相应的目录
  19. DaoGenerator().generateAll(schema, path)
  20. }

3,执行main方法,你会在主工程「java-gen」下发现生成了DaoMaster、DaoSession、NoteDao、Note共4个类文件。

三、使用介绍

1,创建数据库控制器(建议使用单例)

  1. val helper = DaoMaster.DevOpenHelper(context, "db-name", null)
  2. val db = helper.writableDatabase
  3. var daoMaster = DaoMaster(db)

2,获得session(数据库连接)

  1. var daoSession = daoMaster?.newSession()

3,插入数据

  1. val note = Note(null, "Hello", Date())
  2. daoSession?.noteDao?.insert(note)

4,删除数据

  1. val note = Note(null, "Hello", null)
  2. //删除姓名为Hello的数据
  3. daoSession?.noteDao?.delete(note)
  4. //删除ID为3的用户数据
  5. daoSession?.noteDao?.deleteByKey(3)

5,查询数据

  1. val list: MutableList<Note>? = daoSession?.noteDao?.queryBuilder()?.
  2. where(NoteDao.Properties.Name.eq("Hello"))?.
  3. build()?.list()

6,更新数据

  1. val list: MutableList<Note>? = daoSession?.noteDao?.queryBuilder()?.where(NoteDao.Properties.Name.eq("Hello"))?.build()?.list()
  2. if (list != null) for (n in list) {
  3. n.name = "World"
  4. daoSession?.update(n)
  5. }
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注