greendao的简单使用1

来源:互联网 发布:淘宝嘉定仓库 编辑:程序博客网 时间:2024/06/01 07:38

GreenDao的简单使用

GreenDao是一个开源的基于SQLite数据库ORM(对象关系映射).我们在使用SQLite进行数据的缓存与读取,需要自己书写CRUD语句,还要将读取的数据进行转化为java对象,亦或者将java对象转化为数据库存储的一条条记录,这对于不是很熟悉SQL语句的android开发者来说实属不易.当然GreenDao存在的更大的意义是,通过简单的几行代码,就能够自动完成java对象与数据库表之间的链接,从而大大的节省了开发者的时间

特性

  • 最好用的安卓ORM工具
  • 强大的APIs支持
  • 很小的内存开销
  • 引入的jar包体积很小
  • 使用了SQLCipher,保证数据库数据安全
  • 其他不用多说了,使用的人多了,自然性能是经得起考验的

具体使用(greendao版本为:3.2.2,使用的IDE为AndroidStudio)

1.在build.gradle(app)下引入库的依赖

     apply plugin: 'com.android.application'     apply plugin: 'org.greenrobot.greendao' // 生成一个module(library)     android {             ......     }     //初始化数据库     greendao {         schemaVersion 1 //数据库版本         daoPackage 'com.leer.greendaotest.gen'//生成的DAOs, DaoMaster, 和DaoSession存放的包名         targetGenDir 'src/main/java' //上面的daoPackage在工程中存放的位置     }     dependencies {         ......         compile 'org.greenrobot:greendao:3.2.2' // 添加greendao的jar包依赖,会自动进行下载     }

2.在build.gradle(project)下添加greendao插件依赖

    buildscript {         repositories {             jcenter()         }         dependencies {              ......              classpath 'org.greenrobot:greendao-gradle-plugin:3.2.2' // 添加插件         }     }

3.创建数据库当中的表(table)对应的实体(Entity)

   @Entity    public class Student {        @Id(autoincrement = true)        private Long id;        @Property        private String studentName;        @Property(nameInDb = "sex")        private String studentSex;       @Transient        private String isChecked;    }
  • @Entity:代表Student类映射到数据库当中的一个表,表名叫做”Student”;其实我们可以换个角度来看,每张表下面都是一条条的记录,每一条记录包含了单个Student的各种属性,那么一个Student对象就映射到数据库Student表下面的一条条记录.
    • @Id:对应主键,autoincrement = true,代表自增长,在向数据库中插入值得时候我们不必要为这个字段赋值
    • @Property:顾名思义,就是属性,相当于表中的一个个列名,当然Id也是列,只是它是主键列;nameInDb = “sex”:数据库当中的sex对应于实体类当中的studentSex;
    • @Transient:这个字段不会被写入到数据库,只是作为一个普通的java字段用来临时存储数据的,不会被持久化存到数据库当中去
    • 对应的注解还有好多,这里只罗列一些简单常常用到的
    • 更多注解说明请移步:http://m.blog.csdn.net/kongxingxing/article/details/5205233

使用

准备工作已经都准备完了,接下来该使用了.使用很简单—-> build -> Make Project,接下来神奇的事情发生了,看看你的项目目录:

  • 点击Make Project之前:

  • 点击Make Project之后:

    可以看到多了三个自动生成的类:DaoMaster、DaoSession、StudentDao

    这三个类有什么用呢:

  • DaoMaster : 包含一个继承自 OpenHelper 的内部类,完成对数据库的创建,更新;创建数据库当中的表(table)等等;又被称作会话层,和SQLiteDatabase进行会话
  • DaoSession : 管理Daos的class文件;也包含了一些基础的增删改查的方法
  • XXXDao : 数据访问对象,每一张表格对应一个Entity实体类,dao就是访问一张具体表 格下面的数据的对象
        DaoMaster.DevOpenHelper openHelper = new DaoMaster.DevOpenHelper(this, "students.db",null);        Database database = openHelper.getWritableDataBase();        //将database传入daomaster创建daomaster对象        DaoMaster daoMaster = new DaoMaster(database);        //创建DaoSession对象,其实通过DaoSession对象,我们也可以完成对数据的增删改查了,但是利用XXXDao对象,方法会更加的全面        DaoSession daoSession = daoMaster.newSession();        //获取每一张表格的数据访问对象        StudentDao studentDao = daoSession.getStudentDao();        Student student = new Student();        student.id = 1001;        student.name = 张三;        student.sex = male;        //插入数据        studentDao.insert(student);

StudentDao还有update(),delete(),query()等等的方法,如需了解更多,请查看我的 GreenDao的简单使用2 就先写到这里了..