Android数据库框架-GreenDao入门,阿里P8大佬整理

2.2. 查看UserInfoDAO,DaoMaster及DaoSession

上述操作结束之后,在工程目录下,GreenDAO的生成目录中可以找到相应的数据库操作类,我实体类UserInfo的操作类名称为UserInfoDAO,同时也会自动生成DaoMaster和DaoSession

在这里插入图片描述

可以看到生成了三个文件,一个是实体类的操作类,还有DaoMaster,DaoSession等类。

我们先看看DaoMaster类,DaoMaster类主要定义了几个函数

(1)createAllTables、dropAllTables

/** Creates underlying database table using DAOs. */

public static void createAllTables(Database db, boolean ifNotExists) {

UserInfoDao.createTable(db, ifNotExists);

}

/** Drops underlying database table using DAOs. */

public static void dropAllTables(Database db, boolean ifExists) {

UserInfoDao.dropTable(db, ifExists);

}

这两个方法表明了DaoMaster的两个作用,创建和删除所有表。

(2)newSession

public DaoSession newSession() {

return new DaoSession(db, IdentityScopeType.Session, daoConfigMap);

}

public DaoSession newSession(IdentityScopeType type) {

return new DaoSession(db, type, daoConfigMap);

}

这两个类可以创建Session绘画,有两种重载形式,一种可以让我们自定义类型。

(3)构造函数

public DaoMaster(SQLiteDatabase db) {

this(new StandardDatabase(db));

}

public DaoMaster(Database db) {

super(db, SCHEMA_VERSION);

registerDaoClass(UserInfoDao.class);

}

两个重载形式,一个时生成一个数据库,另一个则是注册Config,查看一下registerDaoClass类则会发现,daoConfigMap是一个Map结构

protected final Map<Class<? extends AbstractDao<?, ?>>, DaoConfig> daoConfigMap;

protected void registerDaoClass(Class<? extends AbstractDao<?, ?>> daoClass) {

DaoConfig daoConfig = new DaoConfig(db, daoClass);

daoConfigMap.put(daoClass, daoConfig);

}

通过传进来的UserInfoDao.class作为key,对这个daoConfig进行绑定操作。

而进入到DaoConfig类中,查看DaoConfig的源码时,可以看到注释中的介绍

/**

  • Internal class used by greenDAO. DaoConfig stores essential data for DAOs, and is hold by AbstractDaoMaster. This

  • class will retrieve the required information from the DAO classes.

*/

DaoConfig存储DAO的基本数据,并由AbstractDaoMaster所持

  • 14
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值