xUtils3源码分析之-----DB(ORM)

本文详细分析了xUtils3的DB模块,包括基本使用、配置源码解析及数据库增删改查操作。通过DbManager实例,探讨了如何进行数据库配置、表的创建与操作,以及事务管理。此外,还解释了数据插入、删除、更新和查找的具体实现细节,如动态构建SQL语句、执行SQLiteStatement和数据类型的转换。
摘要由CSDN通过智能技术生成

利用工作之外的时间终于看完了xutils3的所有模块的源码,以此博客来记录自己的分析过程,在此约定半年之后重新分析xUtils3源码对比该系列博客看看自己有没有新的突破。

1. xUtils3源码解析之—–image
2. xUtils3源码解析之—–Http(s)
3. xUtils3源码分析之—–DB(ORM)
4. xUtils3源码分析之—–view注解

基本使用方法

这个demo很详细

配置的一些源码分析

1.DbManager db = x.getDb(daoConfig)通过DbManager.DaoConfig 配置实例得到具体的DbManagerImpl实例,x.getDb(daoConfig)方法里通过调用DbManagerImpl的静态方法getInstance(daoConfig)例得到具体的DbManagerImpl实例,getInstance方法里首先看DAO_MAP集合(key:daoConfig value:DbManagerImpl)是否有对应的DbManagerImpl实例,有的话替换daoConfig,否则创建个实例,再保存到DAO_MAP集合方便下次使用;

2.创建DbManagerImpl实例主要通过openOrCreateDatabase得到SQLiteDatabase,将DaoConfig里面的一些属性赋值到自己,
然后通过DaoConfig的dbOpenListener接口回调onDbOpened(DbMan ager db)方法;

3.getInstance方法得到了DbManagerImpl后,通过比较DbManagerImpl里面的SQLiteDatabase的数据库版本跟DaoConfig的数据库版本,如果不相等则设置新的数据库版本号;

**org.xutils.x;类**

public static DbManager getDb(DbManager.DaoConfig daoConfig) {
    return DbManagerImpl.getInstance(daoConfig);
}

**org.xutils.db.DbManagerImpl;类**
public synchronized static DbManager getInstance(DaoConfig daoConfig) {

    if (daoConfig == null) {//使用默认配置
        daoConfig = new DaoConfig();
    }

    DbManagerImpl dao = DAO_MAP.get(daoConfig);
    if (dao == null) {
        dao = new DbManagerImpl(daoConfig);
        DAO_MAP.put(daoConfig, dao);
    } else {
        dao.daoConfig = daoConfig;
    }

    // update the database if needed
    SQLiteDatabase database = dao.database;
    int oldVersion = database.getVersion();
    int newVersion = daoConfig.getDbVersion();
    if (oldVersion != newVersion) {
        if (oldVersion != 0) {
            DbUpgradeListener upgradeListener = daoConfig.getDbUpgradeListener();
            if (upgradeListener != null) {
                upgradeListener.onUpgrade(dao, oldVersion, newVersion);
            } else {
                try {
                    dao.dropDb();
                } catch (DbException e) {
                    LogUtil.e(e.getMessage(), e);
                }
            }
        }
        database.setVersion(newVersion);
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值