- 在Xcode中添加WCDB,终端执行
curl https://raw.githubusercontent.com/Tencent/wcdb/master/tools/templates/install.sh -s | sh
一、ORM
ORM:
模型-数据库的绑定
1、属性的绑定
2、约束的绑定
二、WCDB简单使用
- 1、
#import <WCDB/WCDB.h>
- 2、
WCDB_PROPERTY
声明属性 - 3、
WCDB_IMPLEMENTATION
声明模型-表的关系 - 4、
WCDB_SYNTHESIZE
绑定模型字段 - 数据库表当中的字段(映射) - 5、
WCDB_UNIQUE
、WCDB_NOT_NULL
约束 - 如果把属性声明
WCDB_PROPERTY
放在模型的.h文件中,其他文件如果用到这个模型的.h,那就要把其文件后缀改成.mm,因为WCDB使用C++实现的。这显然不合理,于是就把属性声明WCDB_PROPERTY
放到模型的一个分类当中,或者放到模型的.m中。分类或扩展。
1、建一个分类,LGStudent+LGTest.h
,.m文件
可以直接删除
#import "LGStudent.h"
#import <WCDB/WCDB.h>
NS_ASSUME_NONNULL_BEGIN
@interface LGStudent (LGTest)
WCDB_PROPERTY(studentID)
WCDB_PROPERTY(name)
WCDB_PROPERTY(gender)
WCDB_PROPERTY(nickName)
WCDB_PROPERTY(imageUrl)
WCDB_PROPERTY(birthday)
@end
NS_ASSUME_NONNULL_END
2、模型LGStudent.m
文件
#import "LGStudent.h"
#import "LGWCDBTool.h"
#import "LGStudent+LGTest.h"
#define LGStudent_table @"LGStudent_table"
@interface LGStudent ()
@end
@implementation LGStudent
//模型-表的关系!!!!
WCDB_IMPLEMENTATION(LGStudent)
//绑定字段 - 数据库表当中的关系
// WCDB_SYNTHESIZE,用于在类文件中定义绑定到数据库表的字段。
WCDB_SYNTHESIZE(LGStudent, studentID)
WCDB_SYNTHESIZE(LGStudent, name)
WCDB_SYNTHESIZE(LGStudent, gender)
WCDB_SYNTHESIZE(LGStudent, nickName)
WCDB_SYNTHESIZE(LGStudent, imageUrl)
WCDB_SYNTHESIZE(LGStudent, birthday)
//约束
WCDB_UNIQUE(LGStudent, studentID)
WCDB_NOT_NULL(LGStudent, studentID)
// 创建表
+ (BOOL)createStudentTable{
return [[LGWCDBTool sharedTool].lgDB createTableAndIndexesOfName:LGStudent_table withClass:[LGStudent class]];
}
// 保存数据-表
+ (BOOL)saveStudentList:(NSArray *)studentList {
//[LGWCDBTool sharedTool].lgDB insertObject:<#(WCTObject *)#> into:<#(NSString *)#> // 插入单行数据
return [[LGWCDBTool sharedTool].lgDB insertOrReplaceObjects:studentList into:LGStudent_table];
}
// 删除根据一个关键字学生模型
+ (BOOL)deleteStudentFromTableWithStudentID:(int)studentID{
BOOL result = [[LGWCDBTool sharedTool].lgDB deleteObjectsFromTable:LGStudent_table where:LGStudent.studentID.is(studentID)];
if (result) {
NSLog(@"删除某条数据成功....");
// [self.updateSignal sendNext:@(YES)];
// 如果result为true表示插入数据库成功,发送一个数据库更新的信号
}
return result;
}
// 删除表里所有内容
+ (BOOL)deleteAllPropertyFromStudentTable{
return [[LGWCDBTool sharedTool].lgDB deleteAllObjectsFromTable:LGStudent_table];
}
@end
网友评论