DWDatabase
描述
这是一个基于FMDB的无侵入式ORM数据库方案。
借助它,您可以直接使用模型操作数据库而不是编写SQL语句,而且您不需要继承特殊模型,从而实现代码的无侵入性。如果您遵循了协议,那么您甚至可以指定模型保存到数据库的属性以及对应的字段名转换。而且,所有操作都将确保线程安全。
Description
这是一个基于FMDB的非侵入式ORM数据库方案。
您可以使用它通过模型管理数据库而不是通过SQL,您无需从特定类继承,从而实现代码的非侵入性。如果您遵循协议,您甚至可以控制将哪些属性保存到数据库的字段名。而且所有这些操作都是线程安全的。
功能
- 根据模型创建表
- 使用模型进行数据库操作
- 自定义模型与数据库字段名映射
- 模型属性白/黑名单
Func
- 使用模型创建表
- 使用模型管理数据库
- 自定义模型与数据库字段名之间的关系
- 保存属性的白名单/黑名单
如何使用
首先,你应该将所需文件拖入项目中,或者你也可以使用Cocoapods来集成它。
pod 'DWDatabase', '~> 1.0.0'
在使用前,请确保已初始化数据库,我们通常建议在AppDelegate中执行此操作。初始化数据库的主要目的是读取本地已存在的数据库信息。
DWDatabase * db = [DWDatabase shareDB];
NSError * err;
if ([db initializeDBWithError:nil]) {
NSLog(@"%@",db.allDBs);
} else {
NSLog(@"%@",err);
}
初始化完成后,你可以通过调用API创建一个新的本地数据库。
BOOL success = [db configDBIfNeededWithClass:cls name:name tableName:tblName path:path error:&err];
成功创建本地数据库后,你可以开始操作数据库。不过,在执行任何操作之前,你首先需要获取操作所需的数据库句柄,对于库操作,你需要获取库名的数据库句柄;对于表操作,你需要获取表名的数据库句柄。
///库名数据库句柄
DWDatabaseConfiguration * conf = [db fetchDBConfigurationWithName:name error:&err];
///表名数据库句柄
DWDatabaseConfiguration * conf = [db fetchDBConfigurationWithName:name tableName:tblName error:&err];
最后,使用数据库句柄进行库操作或表操作。
///插入数据
success = [db insertTableWithModel:model keys:keys configuration:conf error:&err];
当然,如果你觉得这一过程太过繁琐,我还提供了一组合成API让你可以一键完成数据库操作,例如:
BOOL success = [[DWDatabase shareDB] insertTableAutomaticallyWithModel:model name:name tableName:tblName path:path keys:keys error:&error];
这个API组合了上述所有操作,可以直接调用。但作者仍然建议,在清楚数据库状态的情况下,尽可能调用单一的API而不是组合API,这样可以避免很多不必要的判断操作。
Usage
首先,将其拖入你的项目,或使用Cocoapods集成。
pod 'DWDatabase', '~> 1.0.0'
在使用前,请确保已初始化数据库。我们建议在AppDelegate中执行此操作。初始化的主要目的是读取本地数据库信息。
DWDatabase * db = [DWDatabase shareDB];
NSError * err;
if ([db initializeDBWithError:nil]) {
NSLog(@"%@",db.allDBs);
} else {
NSLog(@"%@",err);
}
初始化后,你可以创建一个新的本地数据库。
BOOL success = [db configDBIfNeededWithClass:cls name:name tableName:tblName path:path error:&err];
如果你成功创建了数据库,你可以开始使用配置来管理数据库。对于所有数据库操作,你应该使用数据库配置;对于所有表操作,你应该使用表配置。
///Database-configuration
DWDatabaseConfiguration * conf = [db fetchDBConfigurationWithName:name error:&err];
///Table-configuration
DWDatabaseConfiguration * conf = [db fetchDBConfigurationWithName:name tableName:tblName error:&err];
最后,使用配置来管理数据库。
///Insert model
success = [db insertTableWithModel:model keys:keys configuration:conf error:&err];
当然,如果你觉得这个过程太麻烦,我同时提供了一组合成API,让你可以轻松管理数据库,例如:
BOOL success = [[DWDatabase shareDB] insertTableAutomaticallyWithModel:model name:name tableName:tblName path:path keys:keys error:&error];
这个API包括了上述所有操作,你可以直接调用。但作者仍然建议,清楚数据库状态时,尽可能使用单一API而不是组合API,这样可以避免很多不必要的重复操作。
联系作者
您可以通过在我的GitHub上给我留言,或者通过电子邮箱 [email protected] 告诉我一些建议或指出我的bug,我将会非常感激。
如果你喜欢这个小功能,别忘了给我一个STAR哦,爱你~
Contact With Me
您可以通过在我的GitHub上给我留言,或者通过电子邮箱 [email protected] 告诉我一些建议或指出我的bug,我会非常感激。
如果喜欢它,请给我一个STAR吧。