一、需要在工程的build.gradle中添加依赖
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:2.0.0'
//GreenDao3依赖
classpath 'org.greenrobot:greendao-gradle-plugin:3.2.1'
}
}
二、在项目(Module)的build.gradle中添加依赖
apply plugin: 'com.android.application'
//使用greendao
apply plugin: 'org.greenrobot.greendao'
android {
compileSdkVersion 23
buildToolsVersion "23.0.2"
defaultConfig {
applicationId "com.handsome.didi"
minSdkVersion 14
targetSdkVersion 23
versionCode 1
versionName "1.0"
}
//greendao配置
greendao {
//版本号,升级时可配置
schemaVersion 1
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
testCompile 'junit:junit:4.12'
compile 'com.android.support:appcompat-v7:23.1.1'
//greendao依赖
compile 'org.greenrobot:greendao:3.2.0'
}
配置完成。
三、1、Bean实体的构造方法和get、set方法
2. DaoMaster、DaoSession、DAOS
注解:
@Entity 标识实体类,greenDAO会映射成sqlite的一个表,表名为实体类名的大写形式
@Id 标识主键,该字段的类型为long或Long类型,autoincrement设置是否自动增长
@Property 标识该属性在表中对应的列名称, nameInDb设置名称
@Transient 标识该属性将不会映射到表中,也就是没有这列
@NotNull 设置表中当前列的值不可为空
@Convert 指定自定义类型(@linkPropertyConverter)
@Generated greenDAO运行所产生的构造函数或者方法,被此标注的代码可以变更或者下次运行时清除
@Index 使用@Index作为一个属性来创建一个索引;定义多列索引(@link Entity#indexes())
@JoinEntity 定义表连接关系
@JoinProperty 定义名称和引用名称属性关系
@Keep 注解的代码段在GreenDao下次运行时保持不变
1.注解实体类:默认禁止修改此类
2.注解其他代码段,默认禁止修改注解的代码段
@OrderBy 指定排序
@ToMany 定义与多个实体对象的关系
@ToOne 定义与另一个实体(一个实体对象)的关系
@Unique 向数据库列添加了一个唯一的约束
- void attachEntity(T entity):
- long count():获取数据库中数据的数量
- // 数据删除相关
- void delete(T entity):从数据库中删除给定的实体
- void deleteAll() :删除数据库中全部数据
- void deleteByKey(K key):从数据库中删除给定Key所对应的实体
- void deleteByKeyInTx(java.lang.Iterable<K> keys):使用事务操作删除数据库中给定的所有key所对应的实体
- void deleteByKeyInTx(K... keys):使用事务操作删除数据库中给定的所有key所对应的实体
- void deleteInTx(java.lang.Iterable<T> entities):使用事务操作删除数据库中给定实体集合中的实体
- void deleteInTx(T... entities):使用事务操作删除数据库中给定的实体
- // 数据插入相关
- long insert(T entity):将给定的实体插入数据库
- void insertInTx(java.lang.Iterable<T> entities):使用事务操作,将给定的实体集合插入数据库
- void insertInTx(java.lang.Iterable<T> entities, boolean setPrimaryKey):使用事务操作,将给定的实体集合插入数据库,
- 并设置是否设定主键
- void insertInTx(T... entities):将给定的实体插入数据库
- long insertOrReplace(T entity):将给定的实体插入数据库,若此实体类存在,则覆盖
- void insertOrReplaceInTx(java.lang.Iterable<T> entities):使用事务操作,将给定的实体插入数据库,若此实体类存在,则覆盖
- void insertOrReplaceInTx(java.lang.Iterable<T> entities, boolean setPrimaryKey):使用事务操作,将给定的实体插入数据库,若此实体类存在,则覆盖
- 并设置是否设定主键
- void insertOrReplaceInTx(T... entities):使用事务操作,将给定的实体插入数据库,若此实体类存在,则覆盖
- long insertWithoutSettingPk(T entity):将给定的实体插入数据库,但不设定主键
- // 新增数据插入相关API
- void save(T entity):将给定的实体插入数据库,若此实体类存在,则更新
- void saveInTx(java.lang.Iterable<T> entities):将给定的实体插入数据库,若此实体类存在,则更新
- void saveInTx(T... entities):使用事务操作,将给定的实体插入数据库,若此实体类存在,则更新
- // 加载相关
- T load(K key):加载给定主键的实体
- java.util.List<T> loadAll():加载数据库中所有的实体
- protected java.util.List<T> loadAllAndCloseCursor(android.database.Cursor cursor) :从cursor中读取、返回实体的列表,并关闭该cursor
- protected java.util.List<T> loadAllFromCursor(android.database.Cursor cursor):从cursor中读取、返回实体的列表
- T loadByRowId(long rowId) :加载某一行并返回该行的实体
- protected T loadUnique(android.database.Cursor cursor) :从cursor中读取、返回唯一实体
- protected T loadUniqueAndCloseCursor(android.database.Cursor cursor) :从cursor中读取、返回唯一实体,并关闭该cursor
- //更新数据
- void update(T entity) :更新给定的实体
- protected void updateInsideSynchronized(T entity, DatabaseStatement stmt, boolean lock)
- protected void updateInsideSynchronized(T entity, android.database.sqlite.SQLiteStatement stmt, boolean lock)
- void updateInTx(java.lang.Iterable<T> entities) :使用事务操作,更新给定的实体
- void updateInTx(T... entities):使用事务操作,更新给定的实体