在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
开源软件名称:VVSequelize开源软件地址:https://gitee.com/valox/VVSequelize开源软件介绍:VVSequelize改动(0.4.7)
功能
结构安装pod 'VVSequelize', '~> 0.4.7' 使用测试版本: pod 'VVSequelize', :git => 'https://github.com/pozi119/VVSequelize.git' 注意
用法此处主要列出一些基本用法,详细用法请阅读代码注释. 打开/创建数据库文件 self.vvdb = [[VVDatabase alloc] initWithPath:dbPath]; 定义ORM配置
注意: 已移除fts3/4的支持,仅使用fts5 定义ORM模型可自定义表名和存放的数据库文件.生成的模型将不在保存在ModelPool中,防止表过多导致内存占用大,需要请自行实现. 示例如下: item.orm = [VVOrm ormWithClass:VVMessage.class name:item.tableName database:item.db]; item.ftsOrm = [VVOrm ormWithFtsClass:VVMessage.class name:item.tableName database:item.ftsDb]; 增删改查使用ORM模型进行增删改查等操作. 示例如下: NSInteger count = [self.mobileModel count:nil]; BOOL ret = [self.mobileModel increase:nil field:@"times" value:-1]; NSArray *array = [self.mobileModel findAll:nil orderBy:nil limit:10 offset:0]; ... 生成SQL子句现在仅支持非套嵌的字典或字典数组,转换方式如下: //where/having :{field1:val1,field2:val2} --> field1 = "val1" AND field2 = "val2"[{field1:val1,field2:val2},{field3:val3}] --> (field1 = "val1" AND field2 = "val2") OR (field3 = "val3")//group by:[filed1,field2] --> "field1","field2"//order by[filed1,field2] --> "field1","field2" ASC[filed1,field2].desc --> "field1","field2" DESC 示例: - (void)testClause { VVSelect *select = [VVSelect new]; select.table(@"mobiles"); select.where(@"relative".lt(@(0.3)) .and(@"mobile".gte(@(1600000000))) .and(@"times".gte(@(0)))); NSLog(@"%@", select.sql); select.where(@{ @"city": @"西安", @"relative": @(0.3) }); NSLog(@"%@", select.sql); select.where(@[@{ @"city": @"西安", @"relative": @(0.3) }, @{ @"relative": @(0.7) }]); NSLog(@"%@", select.sql); select.where(@"relative".lt(@(0.3))); NSLog(@"%@", select.sql); select.where(@" where relative < 0.3"); NSLog(@"%@", select.sql); select.groupBy(@"city"); NSLog(@"%@", select.sql); select.groupBy(@[@"city", @"carrier"]); NSLog(@"%@", select.sql); select.groupBy(@" group by city carrier"); NSLog(@"%@", select.sql); select.having(@"relative".lt(@(0.2))); NSLog(@"%@", select.sql); select.groupBy(nil); NSLog(@"%@", select.sql); select.orderBy(@[@"city", @"carrier"]); NSLog(@"%@", select.sql); select.orderBy(@" order by relative"); NSLog(@"%@", select.sql); select.limit(10); NSLog(@"%@", select.sql); select.distinct(YES); NSLog(@"%@", select.sql);} 原生语句查询- (NSArray<NSDictionary *> *)query:(NSString *)sql;- (NSArray *)query:(NSString *)sql clazz:(Class)clazz; 加密数据数据转换(sqlcipher 3.x->4.x) VVDatabase *database = [VVDatabase databaseWithPath:path flags:0 encrypt:@"XXXXX"]; database.cipherOptions = @[ @"pragma cipher_page_size = 4096;", ///<3.x的cipher_page_size,默认为1024 @"pragma kdf_iter = 64000;", @"pragma cipher_hmac_algorithm = HMAC_SHA1;", @"pragma cipher_kdf_algorithm = PBKDF2_HMAC_SHA1;" ]; AuthorValo Lee, [email protected] LicenseVVSequelize is available under the MIT license. See the LICENSE file for more info. |
请发表评论