美文网首页
Realm数据库

Realm数据库

作者: 马上就来 | 来源:发表于2019-07-16 00:01 被阅读0次

    Realm数据库

    1.DML 增删改
    2.DQL 查询
    3.DDL 表格

    返回结果是列表 列表里是字典

    单元测试数据库

    每个单元的测试 函数测试 测试用例
    单元测试一般针对数据层和网络层

    - (void)setUp 用例之前
    - (void)tearDown 测试用例之后
    - (void)testPerformanceExample 测试性能
    

    代码覆盖率 Code Coverage 在xcode的scheme中设置
    显示测试的代码函数覆盖率数量 既包括if里面没有执行的代码
    可以测试代码的覆盖率
    自定义test开头的单元测试文件
    awesome-mac(收集好用的 Mac 应用程序、软件以及工具)
    主键必须有 唯一标识
    1.对sql语句的封装
    2.对面向对象的封装
    通过plist文件创建表 通过runtime设置 在字典转模型是进行忽略key设置
    动态更新表
    对应sqlite有一个不可见的数据库 sqlite_master

    面向对象数据库

    XMGSqliteTool 封装sql语句

    1.处理sql语句 包括创建增删改查等

    + (BOOL)deal:(NSString *)sql uid:(NSString *)uid {
        
        // 1. 打开数据库
        if (![self openDB:uid]) {
            NSLog(@"打开失败");
            return NO;
        }
        // 2. 执行语句
        BOOL result = sqlite3_exec(ppDb, sql.UTF8String, nil, nil, nil) == SQLITE_OK;
        
        // 3. 关闭数据库
        [self closeDB];
        
        return result;
        
    }
    

    2.处理多条语句 sqls 并用事务包装

    + (BOOL)dealSqls:(NSArray <NSString *>*)sqls uid:(NSString *)uid;
    
    

    3.查询语句 返回查询的字典数组

    + (NSMutableArray <NSMutableDictionary *>*)querySql:(NSString *)sql uid:(NSString *)uid;
    

    XMGSqliteModelTool 模型到sql操作的工具

    1. 根据一个模型类, 创建数据库表
     + (BOOL)createTable:(Class)cls uid:(NSString *)uid;
    

    2.判断模型是否要更新 根据与本地的模型数组名称进行对比

    + (BOOL)isTableRequiredUpdate:(Class)cls uid:(NSString *)uid;
    

    3.更新表格 通过创建新的表格进行数据迁移更新并修改表名

    + (BOOL)updateTable:(Class)cls uid:(NSString *)uid;
    
    

    4.保存模型到表格 判断模型与本地表格数量进行判断更新或创建

    + (BOOL)saveOrUpdateModel:(id)model uid:(NSString *)uid;
    

    XMGModelProtocol 模型的协议

    1.主键 必须实现

    @required
    /**
     操作模型必须实现的方法, 通过这个方法获取主键信息
    
     @return 主键字符串
     */
    + (NSString *)primaryKey;
    

    2.模型中忽略的字段数组

    + (NSArray *)ignoreColumnNames;
    

    3.字段名映射 新字段-> 旧字段的映射表格

    + (NSDictionary *)newNameToOldNameDic;
    

    Model 遵守XMGModelProtocol 协议

    XMGTableTool 对表格进行操作

    1.获取表格中所有排序后的字段

    + (NSArray *)tableSortedColumnNames:(Class)cls uid:(NSString *)uid;
    

    2.判断 模型的表格是否存在 通过查询语句

    + (BOOL)isTableExists:(Class)cls uid:(NSString *)uid 
     
    

    XMGModelTool

    1.获取表格名称

    + (NSString *)tableName:(Class)cls 
    

    2.获取临时表格名称

    + (NSString *)tmpTableName:(Class)cls
    

    3.所有成员变量 以及成员变量对应的类型
    使用runtime

    + (NSDictionary *)classIvarNameTypeDic:(Class)cls
    

    4.所有的成员变量 以及成员变量映射到数据库里面对应的模型
    通过oc和sql映射字典

    + (NSDictionary *)classIvarNameSqliteTypeDic:(Class)cls
    

    5.字段名称和sql类型, 拼接的用户创建表格的字符串 如: name text,age integer,score real

    + (NSString *)columnNamesAndTypesStr:(Class)cls 
    

    6.排序后的所有类名对应的成员变量数组

    + (NSArray *)allTableSortedIvarNames:(Class)cls;
    

    相关文章

      网友评论

          本文标题:Realm数据库

          本文链接:https://www.haomeiwen.com/subject/oueakctx.html