欢迎光临
我们一直在努力

FMDB改进方案YIIFMDB:直接将Model存入数据库,不需要写sql语句

建站超值云服务器,限时71元/月

FMDB改进方案YIIFMDB:直接将Model存入数据库,不需要写sql语句

项目介绍:

YIIFMDB的github地址(支持Cocoapods,给个Star)
YIIFMDB的blog地址

YIIFMDB是基于FMDB的进一步封装,可以直接将Model的数据存入数据库,并且在绝大部分情况下不需要写sql语句,只需要执行几个方法就行。

简单例子如下:
创建表

// 基于Model创建一张表
YIIFMDB *db = [YIIFMDB shareDatabase];
[db createTableWithModelClass:[LCVideoModel class] excludedProperties:nil tableName:tableName];

插入数据:

// 基于Model对象插入数据库
LCVideoModel *model = [[LCVideoModel alloc] init];
model.name = [NSString stringWithFormat:@"lc%d", (arc4random() % 100)];
model.gender = arc4random() % 2;
model.age = arc4random() % 80;
model.floatNumber = (arc4random() % 20) / 100.0;
model.doubleNumber = (arc4random() % 20) / 100.0;
model.isMan = arc4random() % 2;
model.number = @(arc4random() % 10);
        
YIIFMDB *db = [YIIFMDB shareDatabase];
BOOL isSuccess = [db insertWithModel:model tableName:tableName];

删除一条数据:

YIIFMDB *db = [YIIFMDB shareDatabase];
YIIParameters *parameters = [[YIIParameters alloc] init];
// db.primaryKey 是数据库的主键,这条语句意思是删除主键 = 1的那条数据
[parameters andWhere:db.primaryKey value:@"1" relationType:YIIParametersRelationTypeEqualTo];
BOOL isSuccess = [db deleteFromTable:tableName whereParameters:parameters];

更改一条数据:

YIIFMDB *db = [YIIFMDB shareDatabase];
YIIParameters *parameters = [[YIIParameters alloc] init];
// 找到主键 = 10的那条数据
[parameters andWhere:db.primaryKey value:@"10" relationType:YIIParametersRelationTypeEqualTo];
// 将主键为10的那条数据的name 设置为 monkey        
BOOL isSuccess = [db updateTable:tableName dictionary:@{@"name": @"monkey"} whereParameters:parameters];

查询数据:

YIIFMDB *db = [YIIFMDB shareDatabase];
YIIParameters *parameters = [[YIIParameters alloc] init];
// 获取到主键 < 5的那些值
[parameters andWhere:db.primaryKey value:@"5" relationType:YIIParametersRelationTypeLessThan];
        
NSLog(@"主键值小于5的所有数据:%@", [db queryFromTable:tableName model:[LCVideoModel class] whereParameters:parameters]);

除此之外,YIIFMDB还提供了添加一个字段,表是否存在,获取表中符合条件的个数,求和,最大值,平均值,最小值等。除此之外,YIIFMDB还提供了数据库安全操作,用法是:

队列

YIIFMDB *db = [YIIFMDB shareDatabase];
[db inDatabase:^{
     // 增删改查放在此代码块里执行则可以保证线程安全
}];

事务

YIIFMDB *db = [YIIFMDB shareDatabase];
[db inTransaction:^(BOOL *rollback) {
// 如果某一个操作失误,则可以执行回滚操作
BOOL isSuccess = YES;   // 数据库操作是否操作成功
if (!isSuccess) {
     *rollback = YES;
                
     return ;
}
}];

赞(0)
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com 特别注意:本站所有转载文章言论不代表本站观点! 本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。未经允许不得转载:IDC资讯中心 » FMDB改进方案YIIFMDB:直接将Model存入数据库,不需要写sql语句
分享到: 更多 (0)