代码拉取完成,页面将自动刷新
sqlite3_update_hook()
不能完全hook所有delete, drop操作, cache将不能被有效更新,会导致查询到错误数据, 所以去掉此功能, 由用户自行管理缓存.pod 'VVSequelize', '~> 0.4.7'
使用测试版本:
pod 'VVSequelize', :git => 'https://github.com/pozi119/VVSequelize.git'
Dictionary/Object
互转会死循环,请将相应的循环引用加入互转黑名单.此处主要列出一些基本用法,详细用法请阅读代码注释.
self.vvdb = [[VVDatabase alloc] initWithPath:dbPath];
VVOrmConfig
.VVOrmable
, fts表适配协议VVFtsable
注意: 已移除fts3/4的支持,仅使用fts5
可自定义表名和存放的数据库文件. 生成的模型将不在保存在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];
...
现在仅支持非套嵌的字典或字典数组,转换方式如下:
//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;
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;"
];
Valo Lee, pozi119@163.com
VVSequelize is available under the MIT license. See the LICENSE file for more info.
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。
1. 开源生态
2. 协作、人、软件
3. 评估模型