美文网首页
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