美文网首页
GreenDAO详解

GreenDAO详解

作者: quanCN | 来源:发表于2019-05-14 00:18 被阅读0次

简介

greenDAO 是一个将对象映射到 SQLite 数据库中的轻量且快速的 ORM 解决方案。
官方文档

项目搭建

  • Gradle引入jar包
    app/build.gradle文件中加入
    implementation 'org.greenrobot:greendao:3.2.2'
    
  • 安装Gradle插件
    在根目录下build.gradle文件中加入
    buildscript {
        dependencies {
            classpath 'org.greenrobot:greendao-gradle-plugin:3.2.2'
        }
    }
    
    app/build.gradle文件中加入
    apply plugin: 'org.greenrobot.greendao'
    
  • 设置数据库版本!!!
    app/build.gradle文件中加入
    android {
    ...
    }
    greendao {
        schemaVersion 2
    }
    
    greendao配置元素支持许多配置选项
    schemaVersion:数据库模式的当前版本。如果更改实体/数据库架构,则必须增加此值!!!!默认为1。
    daoPackage:生成的DAO,DaoMaster和DaoSession的包名。 默认为源实体的包名称。
    targetGenDir:应存储生成的源的位置。 默认为构建目录( build/generated/source/greendao中生成的源文件夹。
    generateTests:设置为true以自动生成单元测试。
    targetGenDirTests:应存储生成的单元测试的基本目录。默认为 src/androidTest/java
  • 检验
    随便创建一个javaBean
    @Entity
    public class Person {
        @Id
        private Long id;
        private String name;
    }
    
    注意:不需要写getter,setter方法和构造方法!!!
    Rebuild Project存在DaoMaster类即为成功

核心类

  • DaoMaster
    DaoMastergreenDAO使用入口,DAOMaster包含数据库对象(sqliteDatabase),管理DAO类(不是对象)。可以创建删除表,其内部类OpenHelperDevOpenHelperSQLiteOpenHelper实现。
  • DaoSession
    管理所有可用DAO对象,通过getter方法获取指定DAO对象。提供了像insert,load,update,refreshdelete这样的方法
  • DAOs
    数据访问对象(DAO)
  • Entities
    javaBean/pojo对象

GreenDao初始化

  • 扩展Application添加DaoSession对象
    public class App extends Application {
        private DaoSession daoSession;
        @Override
        public void onCreate() {
            super.onCreate();
            DaoMaster.DevOpenHelper helper = new DaoMaster.DevOpenHelper(this, "person-db");
            SQLiteDatabase db = helper.getWritableDb();
            daoSession = new DaoMaster(db).newSession();
        }
        public DaoSession getDaoSession() {
            return daoSession;
        }
    }
    
  • AndroidManifest文件中指定自定义的Application
    <application
        android:name=".App">
    </application>
    
  • 这样即可在任意ActivityFragment中获得指定DAO
    DaoSession daoSession = ((App) getApplication()).getDaoSession(); 
    PersonDao personDao = daoSession.getPersonDao();
    

配置javaBean

@Entity
public class Person {
    @Id
    private Long id;
    @NotNull
    private String name;
}
  • @Entity注解
    schema:告知GreenDao当前实体属于哪个schema
    active:标记一个实体处于活跃状态,活动实体有更新、删除和刷新方法
    nameInDb:在数据库中使用的别名,默认使用的是实体的类名
    indexes:定义索引,可以跨越多个列
    createInDb:标记创建数据库表
  • 基础属性注解
    @Id:主键 Long/long 型,可以通过@Id(autoincrement = true)设置自增长
    @Property:设置一个非默认关系映射所对应的列名,默认是使用字段名,例如:@Property(nameInDb = "name")
    @NotNull:设置数据库表当前列不能为空
    @Transient:添加此标记后不会生成数据库表的列
  • 索引注解
    @Index:为相应的数据库列创建数据库索引,name设置别名,unique添加约束
    @Index(unique = true)
    private String name;
    
    @Unique:添加约束
    @Unique 
    private String name;
    

注:javaBean发生更改,会创建新的数据表,之前对应数据库表数据也全部删除!!!

增删改查

  • 增加
    只需要执行DAO对象的insert()方法即可
    personDao.insert(new Person(null,"Tom"));
    
  • 删除
    DAO对象deleteByKey()方法
    personDao.deleteByKey(3L);
    
  • 更改
    DAO对象update()方法
    Person person = new Person(1L,"Ming");
    personDao.update(person);
    
  • 查询
    loadAll()load()进行简单查询
    List<Person> people = personDao.loadAll();
    Log.d("SQLite Data", people+"");
    
    使用QueryBuilder进行复杂查询
    List<Person> people = personDao.queryBuilder().where( PersonDao.Properties.Age.between(16,18)).list(); 
    Log.d("SQLite Data", people+"");
    

相关文章

  • GreenDao 问题集合

    GreenDao 详解 GreenDao 简介 GreenDAO 是一款开源的面向 Android 的轻便、快捷的...

  • GreenDao3.0使用

    史上最高效的ORM方案——GreenDao3.0详解 GreenDao3.0简单使用 关于GreenDao gre...

  • GreenDao详解二

    在上一篇GreenDao详解一中有讲到,GreenDao在build的时候,会自动生成DaoMaster, Dao...

  • 好文章推荐

    好文章推荐 1.Android数据存储之GreenDao 3.0 详解 2.Dagger2 使用详解 3.stet...

  • GreenDAO详解

    简介 greenDAO 是一个将对象映射到 SQLite 数据库中的轻量且快速的 ORM 解决方案。官方文档 项目...

  • GreenDao详解一

    GreenDao是一个对象关系型框架,也就是我们常说的ORM框架,使用它可以通过操作对象的方式去操作数据库。从而不...

  • GreenDao3.0详解

    GitHub地址:GreenDao 介绍 GreenDao是一款适用于Android的轻量快速ORM,可将对象映射...

  • greenDAO的使用详解---(3)greenDAO3.2.2

    1.解决上一篇遗留的bug 原因分析: 当某张表需要添加一个int类型的列时,升级数据库则会报NOT NULL约束...

  • greenDAO的使用详解---(4)greenDAO3.2.2

    1.SQLCipher介绍 SQLCipher是一个在SQLite基础之上进行扩展的开源数据库,它主要是在SQLi...

  • greenDAO的使用详解---(2)greenDAO3.2.2

    1.使用的工具 国外程序员网站stackoverflow上面提供的MigrationHelper.java类做数据...

网友评论

      本文标题:GreenDAO详解

      本文链接:https://www.haomeiwen.com/subject/qoadaqtx.html