1.DaoMaster
它持有数据库对象(SQLiteDataBase),并且提供了创建和删除表的静态方法。有两个内部类,OpenHelper、DevOpenHelper实现SQLiteOpenHelper,用来创建数据库表结构。
2.DaoSession:
DaoSession用来管理Dao对象,可通过get方法,获取XXDao对象,进行对表的基本操作。DaoSession本身也提供了一些基本的持久性方法,例如:插入,删除,更新等。
3.Dao
实体访问对象,对每个实体xx,GreenDao会生成一个xxDao对象,该对象有更多的持久方法,可以对表进行操作,例如:count,loadAll和insertInTx。
4.实体类:
持久对象,通常采用标准的java属性(如javaBean)来标识数据库对象。
1.在工程目录的build.gradle下添加仓库和插件
mavenCentral()
classpath 'org.greenrobot:greendao-gradle-plugin:3.3.0'
配置图如下:
2.在app目录的build.gradle下添加相关库
plugins {
id 'com.android.application'
id 'org.greenrobot.greendao'
}
dependencies {
implementation 'org.greenrobot:greendao:3.3.0'
implementation 'org.greenrobot:greendao-generator:3.3.0'
}
配置图如下:
注意:添加库依赖和插件依赖,版本保持一致,不然可能会报错。
3.GrenDao版本,生成核心类路径配置
greendao {
schemaVersion 2 //数据库版本 ,
daoPackage 'com.zheng.greendaodemo.green' //可指定自动生成类的路径
targetGenDir 'src/main/java'
}
------------------------------到这里GreenDao的基本配置就Ok了------------------------------
1.首先定义一个实体类,注意使用@Entity 标识
@Entity
public class Animals {
@Id(autoincrement = true)
private Long id; //ID 设置自增长
private String name; //名称
private String age; //年龄
private String color; //颜色
private String address; //地址
}
创建完之后,标题栏Build-Mack Project(ctr+F9),或者有个绿色小锤子,如图:
make project之后,有两个变化
(1).实体类:会自动生成一个有参构造方法和一个无参构造方法,并为属性添加get和set方法,如图:
(2).在src/main/java/包下面,会自动生成前面介绍的类,Master、Session、Dao。(DataOpenHelper,MigrationHelper请忽略,这个是自己添加的自动升级的类)如图:
注:实体类中如果有部分属性不想写入数据库,可以查看相关限制。
2.实例化DataOpenHelper、DaoMaster、DaoSession,获取Session,从而获取Dao操作类。可以自己封装一个单例获取。
DataOpenHelper dataOpenHelper = new DataOpenHelper(sContext, "test", null);
DaoMaster daoMaster = new DaoMaster(dataOpenHelper.getWritableDb());
DaoSession daoSession = daoMaster.newSession();
AnimalsDao animalsDao = daoSession.getAnimalsDao();
获取到的animalsDao对象,就可以对其进行增删给查操作。
(1).插入:
例如:插入猫,颜色白色,地址xx1巷2号
Animals animal = new Animals(null,"猫","white","xx1巷2号");
mAnimalsDao.insert(animal);
(2).删除:
例如:根据条件删除Name 字段为”猫“的记录
mAnimalsDao.queryBuilder().where(AnimalsDao.Properties.Name.eq("猫")).buildDelete().executeDeleteWithoutDetachingEntities();
(3).更新
例如:将Name字段为猫的age字段更新为100
Query unique = mAnimalsDao.queryBuilder().where(AnimalsDao.Properties.Name.eq("猫")).build();
for (Animals animals : unique.list()) {
if (animals != null) {
animals.setAge("100");
mAnimalsDao.update(animals);
}
}
注:这里查询结果可能不唯一,如果唯一可以用unique()标志唯一性。
(4).查询
例如:查询所有数据
List animalsList = mAnimalsDao.queryBuilder().list();
关于GreenDao的基本配置和简单的增删改查介绍完毕
特别声明:所有内容也是集各家之所长,仅记录学习,如有侵权或不对之处,还请告知,定当删除或改正。