• iOS开发一行代码系列:一行搞定数据库


    原理

    iOS 和 SQL的相应关系

    Model类结构      =>    SQL表结构

    Model实例       =>  SQL表中的一行

    Model实例的属性   =>   SQL表中的一列


    Model和Table的相应

    @interface TestModel :NSObject
    
    @property (assign, nonatomic) NSInteger age;
    @property (assign, nonatomic) CGFloat height;
    @property (assign, nonatomic) long distance;
    @property (assign, nonatomic) double maxDistance;
    @property (assign, nonatomic) BOOL isOK;
    @property (assign, nonatomic) char mChar;
    
    
    @property (assign, nonatomic) CGRect rect;
    @property (assign, nonatomic) CGPoint point;
    @property (assign, nonatomic) CGSize size;
    @property (assign, nonatomic) NSRange range;
    
    
    @property (strong, nonatomic) NSNumber *number;
    @property (strong, nonatomic) NSString *string;
    @property (strong, nonatomic) UIColor *color;
    @property (strong, nonatomic) NSDate *date;
    
    @property (strong, nonatomic) NSData *data;// convert to data
    @property (strong, nonatomic) NSValue *value;
    @property (strong, nonatomic) UIImage *image;
    
    @end


    相应的表结构就是 TABLE TestModel (age type,height type,distance type,isOK type,mChar type,...)


    方法

    以下是一些可用的方法,还在完好中。。。


    +(ModelToTableMap*)getModelToTableMap;
    
    +(NSString*)getDBPath;
    +(NSString*)getTableName;
    +(NSArray*)getPrimaryKeys;
    
    +(NSDictionary *)getPropertyToColumnMap;
    +(NSDictionary *)getDefaultValueDictionary;
    +(NSDictionary *)getLengthDictionary;
    +(NSDictionary *)getCheckValueDictionary;
    +(NSDictionary *)getIsUniqueDictionary;
    +(NSDictionary *)getIsNotNullDictionary;
    
    +(BOOL)shouldModelToTableMapContainParentProperties;
    +(BOOL)shouldModelToTableMapContainSelfProperties;
    
    +(NSString *)getDateFormatterString;
    +(NSString *)getDBImagePathWithImageName:(NSString *)imgName ;
    +(NSString *)getDBDataPathWithDataName:(NSString *)dataName;
    
    
    +(BOOL)createTable;
    
    +(BOOL)dropTable;
    
    
    +(id)firstModelWhere:(NSObject *)where;
    +(id)firstModelWhere:(NSObject *)where orderBy:(NSString*)orderBy ;
    
    
    +(NSArray *)allModels;
    +(NSArray *)findModelsWhere:(NSObject *)where;
    +(NSArray *)findModelsWhere:(NSObject *)where orderBy:(NSString*)orderBy offset:(int)offset count:(int)count;
    
    
    +(BOOL)insertModel:(NSObject *)model;
    +(BOOL)insertModelWhenNotExists:(NSObject *)model;
    
    
    +(BOOL)deleteModel:(NSObject *)model;
    +(BOOL)deleteModelsWhere:(NSObject *)where;
    
    
    +(BOOL)updateModelsWithModel:(NSObject *)model where:(NSObject *)where;
    +(BOOL)updateModelsWithDictionary:(NSDictionary *)dic where:(NSObject *)where;
    
    
    +(BOOL)isModelExists:(NSObject *)model;
    
    
    - (BOOL)saveModel;
    - (BOOL)deleteModel;
    - (BOOL)updateModel:(NSObject *)theNewModel;
    - (BOOL)updateModelWithDictionary:(NSDictionary *)dic;


    使用

    TestModel *model = [[TestModel alloc] init];
    model.age = 20;
    model.image = [UIImage imageNamed:@"img.jpg"];
    
    
    //添加
    [model saveModel]
    //删除
    [model deleteModel]
    
    //改动
    [model updateModelWithDictionary:@{@"age":@(21)}]
    //查找
    [TestModel allModels]

    下载地址:点这里

  • 相关阅读:
    jquery的img的动态title换行
    PHP小技巧
    Jquery zTree结合Asp.net实现异步加载数据
    Could not load type 'System.ServiceModel.Activation.HttpModule' from assembly 'System.ServiceModel, Version=3.0.0.0,"解决办法
    ORACLE使用数据泵导入导出部分表
    兼容IE、火狐、谷歌的页面关闭事件
    MySQL存储引擎总结
    linux常用基本命令
    PHP扩展模块Pecl、Pear以及Perl的区别
    php实现socket
  • 原文地址:https://www.cnblogs.com/gcczhongduan/p/5220098.html
Copyright © 2020-2023  润新知