用简单的方式操作sqlite
来源:互联网 发布:刷高中生物的软件 编辑:程序博客网 时间:2024/06/06 00:56
很久前就想写一个类似于ORM的东西,把数据层(Model)和数据库的表(Table)对应起来,写了一半后来就忘记了。github连接点我
原理:
每一个项目有N个数据库
每一个Model对应一个数据表
Model的每个字段对应表中的列
Model的每个字段的类型对应表每列的类型
把Model保存数据库的过程:
1、检测用户配置项,确定那些字段是要映射
2、把Model的属性和属性类型装换成表对应的列和列类型
3、转换成SQL语句
4、插入到数据库
从数据库中读取数据转成Model的过程和这个相反。
DBAssistant
DBAssistant base on FMDB and it provide a simple way to access sqlite database.
Getting started
add pod ‘DBAssistant’ to your Podfile
run pod install
import "NSObject+DB.h"
Example
create a file user.h
@interface User : NSObject@property (strong, nonatomic) NSString *name;@property (assign, nonatomic) CGFloat height;@property (assign, nonatomic) NSInteger num;@end
use the User model where you need
//create a new modelUser *user = [[User alloc]init];user.name = @"mason";user.height = 180.23;user.num = 123456;[user saveModel]; NSLog(@"users count: %ld",User.allModels.count);//find modeluser = [User firstModelWhere:@{DBRowId: @(1)}];NSLog(@"name %@,num: %ld,height: %lf",user.name,user.num,user.height);//update model[user updateModel:@{@"name": @"Dear"}];user = [User firstModelWhere:@{DBRowId: @(1)}];NSLog(@"name %@,num: %ld,height: %lf",user.name,user.num,user.height);//delete model[user deleteModel];NSLog(@"users count: %ld",User.allModels.count);
More Interfaces
Configs
//dbPath+(NSString*)dbPath;//tableName,default is the current class+(NSString*)tableName;//primarykeys,default is DBRowID+(NSArray*)primaryKeys;//only properties to map table columns+(NSArray *)onlyPropertiesToMapColumns;//except properties to map table columns+(NSArray *)exceptPropertiesToMapColumns;//property to column Mappings+(NSDictionary *)propertyToColumnMappings;//properties default values+(NSDictionary *)defaultValues;//properties value check values+(NSDictionary *)checkValues;//properties value length+(NSDictionary *)lengthValues;//properties value those should be unique+(NSArray *)uniqueValues;//properties value those should be not null+(NSArray *)notNullValues;+(NSString *)dateFormatterString;+(NSString *)imagePathForImage:(NSString *)imgName ;+(NSString *)dataPathForData:(NSString *)dataName;//default is YES+(BOOL)shouldMapAllParentPropertiesToTable;//default is YES+(BOOL)shouldMapAllSelfPropertiesToTable;
Create/Drop table
+(BOOL)createTable;+(BOOL)dropTable;
Insert
+(BOOL)insertModel:(NSObject *)model;+(BOOL)insertModelIfNotExists:(NSObject *)model;-(BOOL)saveModel;
Update
+(BOOL)updateModelsWithModel:(NSObject *)model where:(NSObject *)where;+(BOOL)updateModelsWithDictionary:(NSDictionary *)dic where:(NSObject *)where;-(BOOL)updateModel:(id)value;
Find
+(BOOL)modelExists:(NSObject *)model;+(NSArray *)allModels;+(NSArray *)findModelsBySQL:(NSString *)sql;+(NSArray *)findModelsWhere:(NSObject *)where;+(NSArray *)findModelsWhere:(NSObject *)where orderBy:(NSString *)orderBy;+(NSArray )findModelsWhere:(NSObject *)where groupBy:(NSString *)groupBy orderBy:(NSString)orderBy limit:(int)limit offset:(int)offset;+(id)firstModelWhere:(NSObject *)where;+(id)firstModelWhere:(NSObject )where orderBy:(NSString)orderBy ;+(id)lastModel;+(NSInteger)rowCountWhere:(NSObject *)where;
Delete
+(BOOL)deleteModel:(NSObject *)model;+(BOOL)deleteModelsWhere:(NSObject *)where;-(BOOL)deleteModel;
Transaction
+(void)beginTransaction;+(void)commit;+(void)rollback;
阅读全文
1 0
- 用简单的方式操作sqlite
- 简单的SQLite操作
- SQLite的简单操作
- SQLite的简单操作
- SQLite简单的入门操作
- SQLite数据库的简单操作
- SQlite 数据库的简单操作
- SQLite的操作简单介绍
- Android中SQLite的简单crud操作
- 简单封装FMDB操作sqlite的模板
- SQLite操作数据库的简单应用
- iOS上数据库SQLite的简单操作
- SQLite简单操作
- Android sqlite 简单操作
- sqlite数据库简单操作
- Android sqlite 简单操作
- SQLite数据库简单操作
- sqlite 简单操作
- 三层交换机与路由器的异同
- android Volley完全解析(二)使用Volley加载图片
- hdu6095-思维-Rikka with Competition
- c# 有关虚方法要知道的知识点
- javascript 正则表达式
- 用简单的方式操作sqlite
- 一个Log系统,客户端运行起来,排除那些可以输出(dll文件)
- 《Effective Javascript》
- android 对已知路径下图片进行压缩
- android在下载app后自动安装,安装完成后不会弹出打开或完成界面
- html中图片上传预览功能
- 全局最小割 poj2914 Minimum Cut
- Linux 下wait函数详解
- UTF-8编码)将字符串写入文件,当字符串中包含中文时,出现写入文件的数据残缺,而当不包含中文时,写入文件的数据正常