GreenDao对外提供核心类简介
一旦您定义了至少一个实体并构建了您的项目,您就可以在Android项目中开始使用GreenDAO。
以下核心类是GreenDAO的基本接口:
DaoMaster-->DaoSession-->XXXDao-->XXXEntity-->
- DaoMaster
使用GreenDAO的入口点。
DaoMaster保存数据库对象(sqlite数据库),并管理特定架构的DAO类(非对象)。
它具有创建表或删除它们的静态方法。
它的内部类OpenHelper和devOpenHelper是在SQLite数据库中创建架构的sqliteOpenHelper实现。
方法介绍:
构造方法
DaoMaster(Database db)
DaoMaster(SQLiteDatabase db)
创建表
static void createAllTables(Database db, boolean ifNotExists)
删除表
static void dropAllTables(Database db, boolean ifExists)
获取DaoSession
static DaoSession newDevSession(Context context, String name)
DaoSession newSession()
DaoMaster.OpenHelper
直接或者间接继承自SQLiteOpenHelper
DaoMaster.DevOpenHelper
直接或者间接继承自SQLiteOpenHelper
内部类OpenHelper和DevOpenHelper是创建SQLite数据库的SQLiteOpenHelper的具体实现
- DaoSession
管理特定架构的所有可用DAO对象,您可以使用get方法获得该对象。DaoSession还为实体提供了一些通用的持久性方法,如插入、加载、更新、刷新和删除。最后,DaoSession对象还跟踪标识范围。
有关更多细节,请查看会话文档。
session documentation
部分核心方法介绍:
增加单个数据,返回实体id
long insert(T entity)
long insertOrReplace(T entity)
增加多个数据
insertInTx(Iterable<T> entities)
insertOrReplaceInTx(Iterable<T> entities)
删除数据
delete(T entity)
deleteAll()
deleteByKey(K key)
删除多个数据
deleteInTx(Iterable<T> entities)
修改单个数据
update(T entity)
修改多个数据
updateInTx(Iterable<T> entities)
查询单个数据
T load(K key)
查询全部
数据条数
long count()
获取查找构造器
QueryBuilder<T> queryBuilder()
.queryBuilder().list();
QueryBuilder,查找构造器以及其主要方法
查询附加单个条件
.where()
.whereOr()
查询附加多个条件
.where(, , ,)
.whereOr(, , ,)
查询附加排序,降序,升序
.orderDesc()
.orderAsc()
查询限制当页个数
.limit(int x)
返回单个结果,如果没有满足条件的结果,前者返回null, 后者抛出异常
unique()
uniqueOrThrow()
返回总条数
long count()
- XXXDao
数据访问对象(DAO)持续存在,并查询实体。对于每个实体,GreenDAO生成一个DAO。它有比DaoSession更多的持久性方法
xxxDao的使用
1,创建DaoMaster.DevOpenHelper对象.
2,通过DaoMaster.DevOpenHelper的实例获取SQLiteDatabase并建立数据连接
3,通过构造函数DaoMaster(SQLiteDatabase db)来创建DaoMaster实例对象
4,通过DaoMaster实例对象获取DaoSession对象
5,通过DaoSession对象来获取StudentDao对象
6,使用StudentDao对象来进行增删改查!!
- XXXEntity
持久化对象 ,使用标准java属性表示实体数据库行对象
数据库的初始化
数据库的初始化只需执行一次,我们可以在Application中进行初始化,操作如下
public class MyApplication extends Application {
private static MyApplication mApp;
private SQLiteDatabase database;
private DaoSession daoSession;
private StudentDao studentDao;
public StudentDao getStudentDao() {
return studentDao;
}
@Override
public void onCreate() {
super.onCreate();
mApp = this;
initDB();
}
private void initDB() {
DaoMaster.DevOpenHelper devOpenHelper
= new DaoMaster.DevOpenHelper(this, "student-db", null);
database = devOpenHelper.getWritableDatabase();
DaoMaster daoMaster = new DaoMaster(database);
daoSession = daoMaster.newSession();
studentDao = daoSession.getStudentDao();
//自定义DBHelper的方式,进行初始化.
// MyDBHelper dbHelper = new MyDBHelper(this);
// DaoMaster master = new DaoMaster(dbHelper.getWritableDatabase());
// StudentDao dao = master.newSession().getStudentDao();
}
public SQLiteDatabase getDatabase() {
return database;
}
public DaoSession getDaoSession() {
return daoSession;
}
public static MyApplication getInstance(){
return mApp;
}
}
参考文献
Introduction
http://greenrobot.org/greendao/documentation/introduction/