ReflectionDao
使用反射编写在Objective C上的iOS SQLite库。其核心思想是简化DAO类的创建,并且无需复杂的配置。
如何使用
以下是一些使用示例中的DAO类示例
//PersonModel.h
@interface PersonModel : DaoModel
@property(nonatomic, strong) NSString *rg;
@property(nonatomic, strong) NSString *name;
@property(nonatomic) int age;
@property(nonatomic, strong) NSDate *birth;
@end
//PersonModel.m
@implementation PersonModel
-(NSString *)primaryKeyName {
return @"rg";
}
@end
//AddressModel.h
@interface AddressModel : DaoModel
@property(nonatomic, strong) NSString *rgPerson;
@property(nonatomic, strong) NSString *stringAddress;
@end
@-(NSString *)primaryKeyName
返回表示表主键的属性名称。如果您没有指定,则库将创建一个默认的Number id,可以通过-(id)primaryKeyValue
和-(NSString *)primaryKeyName
方法访问该列名称。
要初始化您的数据库,请使用来自DBManager
类的DBManagerDelegate
和+(void)initDB:(id<DBManagerDelegate>)delegate
@interface AppDelegate ()<DBManagerDelegate>
...
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
[DBManager initDB:self];
return YES;
}
...
#pragma mark - DBManagerDelegate methods
//return db scheme version
-(int)dbSchemeVersion {
return 1;
}
//return an array of Dao Classes
-(NSArray<Class> *)dbDaoClasses {
return @[PersonModel.class, AddressModel.class];
}
//do something after create or update db - @optional
-(void)dbPostCreationOrUpdate {
}
删除、创建和修改表都由库管理。
使用示例
您可以直接从模型类或使用查询类使用库。以下是一些示例
PersonModel *person = [PersonModel new];
person.rg = @"rg";
person.name = @"Pedro";
person.age = 16;
person.birth = [NSDate new];
[person insertModel];
AddressModel *address = [AddressModel new];
address.rgPerson = @"rg";
address.stringAddress = @"somewhere";
[address insertModel];
...
[person delete]; //delete the person
使用查询类查询
NSArray<AddressModel *> *addresses = [[[[Select from:AddressModel.class]
where:@"rgPerson" value:@"rg" comparation:EQUAL]
orderBy:DEFAULT_PRIMARY_KEY order:DESCENDING]
limit:5].execute;
...
int del = [Delete from:PersonModel.class].execute;