大家好,我是考100分的小小码 ,祝大家学习进步,加薪顺利呀。今天说一说MQFMDB 在FMDB上封装了一层实现ORM操作,希望您对编程的造诣更进一步.
MQFMDB
在FMDB上封装了一层实现ORM操作
由于使用了SQLCipher来加密数据库所以你需要安装FMDB/SQLCipher版本推荐使用2.7.5版本
pod 'FMDB/SQLCipher', '=2.7.5'
目前支持的数据类型
- NSString
- NSDate
- NSData
- NSDictionary
- NSArray
- C基本数据类型
使用说明
-
创建配置文件
{ "identify": "MQFMDB_Demo", "version": "1.0.0", "path": "<MQFMDB>/MQFMDB_Demo.sqlite", "key": "123456789", "upgrade": {} }
-
根据表结构建立类并继承MQFMDBObject, 类的属性中对应数据库的必须使用
@dynamic
关键字声明该属性, 并且属性名不能大写开头@interface TDSession : MQFMDBObject @property (nonatomic, copy) NSString * name; @end @implementation TDSession @dynamic name; @end
-
读取配置文件并使用MQFMDB打开数据库, 并在opertions block中建立表
self.userDB = [[MQFMDB alloc] initWithConfigContent:configContent]; [self.userDB openDataBaseWithForceOpenIfUpgradeFail:YES opertions:^(MQFMDB *db) { /** 在这里创建表和其他操作 */ [db insertNewTable:[TDSession class]]; }];
-
创建一条数据
TDSession * session = [self.userDB insertNewObjectForTable:[TDSession class]]; session.name = @"session";
-
保存数据
[self.userDB saveOpertion];
完成之后在[MQFMDB MQFMDBFolder]
中已经创建一个数据库和一张名叫TDSession表并且表里有一条name等于session的数据。
修改数据
-
读取配置文件打开数据库
self.userDB = [[MQFMDB alloc] initWithConfigContent:configContent]; [self.userDB openDataBaseWithForceOpenIfUpgradeFail:YES opertions:^(MQFMDB *db) { /** 在这里创建表和其他操作 */ [db insertNewTable:[TDSession class]]; }];
-
查询数据, 并获取查询到的第一条
TDSession * session = [[self.userDB queryTable:[TDSession class] condition:@"name == 'session'"] firstObject];
-
修改数据
session.name = "mmmm";
-
保存修改
[self.userDB saveOpertion];
完成之后TDSession表中name == 'session'
的第一条数据的name变为了mmmm
配置文件字段说明
-
identify
数据库标识符 一个App里面每个数据库标识符必须是唯一的 -
version
数据库版本号 -
key
数据库密码 -
upgrade
数据库升级的相关语句 -
path
数据库存放位置内置了两个目录
<App>
、<MQFMDB>
<App>
在App根目录下一般用于读取内置数据库
<MQFMDB>
在Documents目录下的MQFMDB文件夹如果没有则会自动创建
数据库升级
-
修改配置文件, 修改当前版本号, 并在upgrade建立一个在哪个版本升级的字段, 并在该字段里的commands里写入升级语句
现在是从1.0.0升级到1.0.1,并在TDSession加入count字段
{ "identify": "MQFMDB_Demo", "version": "1.0.1", "path": "<MQFMDB>/MQFMDB_Demo.sqlite", "key": "123456789", "upgrade": { "1.0.0": { "commands": [ "ALTER TABLE `TDSession` ADD COLUMN count INTEGER" ] } } }
-
修改TDSession类, 增加count属性,并且使用
dynamic
声明该属性@interface TDSession : MQFMDBObject @property (nonatomic, copy) NSString * name; /** version-1.0.1 */ @property (nonatomic, assign) NSInteger count; @end @implementation TDSession @dynamic name; @dynamic count; @end
-
重新打开数据库就完成了升级运行之前需要保证当前数据库版本处于1.0.0版本
对于SQLite不支持删除字段,所以推荐的做法是忽略这个字段,比如在类中删除该字段对应的属性
Demo中有增删查改的演示, 在Swift中使用,请使用桥接方法
Github: github.com/zx126211173…
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/37043.html