WCDB

作者: Code_人生 | 来源:发表于2019-10-08 16:42 被阅读0次
  • 在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_UNIQUEWCDB_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

相关文章

网友评论

      本文标题:WCDB

      本文链接:https://www.haomeiwen.com/subject/kcoductx.html