greendao介绍

来源:互联网 发布:mac视频播放器 编辑:程序博客网 时间:2024/06/03 21:55

一.ORM原理介绍

    ORM实际上是,对象关系模型的程序方法,用于实现面向对象编程语言不通类型系统的数据之间的转换,也就是说,我们不需要要在java层关系关系数据库的具体实现,也不需要在关系数据库层,关心java对象的使用,从而提高编程的效率。

二.greendao3.0的使用

    1.greendao3.0的引入工程,在project工程的build.gradle配置文件中添加greendao插件,这个插件主要是为了动态的生产数据库代码,apply plugin: 'org.greenrobot.greendao',这个是添加插件,这些信息都是在工程的gradle配置文件中添加,在我们新建了,数据库bean的java文件后,重新编译工程,就会在工程中自动的生成相应的数据库操作类,以下是greendao的配置:

greendao {
    schemaVersion 12
    daoPackage 'com.common.greendao'
    targetGenDir 'src/main/java'
}

apply plugin: 'org.greenrobot.greendao'
greendao {    schemaVersion 14    daoPackage 'com.common.greendao'    targetGenDir 'src/main/java'}

整个工程配置中添加:

classpath 'com.android.tools.build:gradle:2.1.2'classpath 'org.greenrobot:greendao-gradle-plugin:3.0.0'

其中,schemaVersion 代表数据库库版本,当升级的时候需要修改这个参数,在gradle配置中,可以写多个greendao{}的配置,但是,都是以最后一个为准,

    2.数据库bean规则:(1).所有数据库bean必须用@Entity(org.greenrobot.greendao.annotation.Entity)修饰,编译过程中,通过这个标签识别那些类是需要转换为数据库表的,还有其他一些注解可以使用:

    (2)@Entity类型,用于标示这是一个需要Greendao帮我们生成代码的bean;

            @Entity(
        schema = "myschema",
        active = true,
        nameInDb = "AWESOME_USERS",
        indexes = {
                @Index(value = "name DESC", unique = true)
        },
        createInDb = false
)

    (3)@Id 标明主键,可以指定是不是自增; boolean autoincrement() default false,是否自动增长;

    (4)@Property 用于设置属性在数据库中的列名(不设置默认的话保持一致)nameInDb属性,设置该属性在数据库中的名称;

     (5)@NotNull 非空;

     (6)@Transient 标识这个字段是自定义的不会创建到数据库


   3.数据库操作
      DaoMaster.OpenHelper devOpenHelper = new DaoMaster.OpenHelper(getApplicationContext(), "temp.db", null);
      用于提供DatabaseOpenHelper,工具类,
      DaoMaster daoMaster = new DaoMaster(devOpenHelper.getWritableDb());
      DaoSession daoSession = daoMaster.newSession();
      userDao = daoSession.getUserDao();
      userDao.update(user);
 
 4.identityScope
     greendao有一个缓存机制,即把用户插入,更改或查找的实体保存在内存中,当用户下一次查找时先从内存中查找,如果不存在再从数据库中查找,当表的主键是数字类型的时候,identityScopeLong将不会空,并且指向identityScope



0 0
原创粉丝点击