登录 立即注册
金钱:

Code4App-iOS开发-iOS 开源代码库-iOS代码实例搜索-iOS特效示例-iOS代码例子下载-Code4App.com

WHC_ModelSqliteKit

[复制链接]
来自: Torr 分类: iOS精品源码 上传时间: 2017-1-5 09:57:26
Tag:数据库 Database mysql CoreData Sqlite

项目介绍:

https://github.com/netyouli/WHC_ModelSqliteKit

WHC_ModelSqliteKit

架构图

简介

  • 目标: 替代直接使用Sqlite和CoreData

  • 架构: 采用runtime技术和Sqlite Api完美结合打造

  • 易用: 告别繁琐sql语句的编写和CoreData复杂创建

  • 支持: (NSData,NSString,Int,double,float,Bool,char,NSNumber)类型

  • 强大: 支持模型嵌套模型类存储到数据库和多表嵌套联查

  • 智能: 根据数据库模型类提供的VERSION方法返回的版本号来智能更新数据库字段(动态删除/添加)

  • 咨询: 712641411

  • 作者: 吴海超

要求

  • iOS 5.0 or later

  • Xcode 8.0 or later

集成

  • 使用CocoaPods:

  • pod 'WHC_ModelSqlite', '~> 1.1.4'

  • 手工集成:

  • 导入文件夹WHC_ModelSqliteKit

用法

1.存储嵌套模型对象到数据库演示

Person * whc = [Person new];
whc.name = @"吴海超";
whc.age = 25;
whc.height = 180.0;
whc.weight = 140.0;
whc.isDeveloper = YES;
whc.sex = 'm';

// 嵌套car对象
whc.car = [Car new];
whc.car.name = @"撼路者";
whc.car.brand = @"大路虎";

// 嵌套school对象
whc.school = [School new];
whc.school.name = @"北京大学";
whc.school.personCount = 5000;

// school对象嵌套city对象
whc.school.city = [City new];
whc.school.city.name = @"北京";
whc.school.city.personCount = 1000;

[WHC_ModelSqlite insert:whc];

2.存储批量模型对象到数据库演示

NSArray * persons = [self makeArrayPerson];
[WHC_ModelSqlite insertArray:persons];

3.无条件查询数据库中模型类演示

NSArray * personArray = [WHC_ModelSqlite query:[Person class] where:nil];

4.条件查询数据库中模型类演示(where 条件查询语法和sql where条件查询语法一样)

NSArray * personArray = [WHC_ModelSqlite query:[Person class] where:@"name = '吴海超2' OR age <= 18"];

5.查询数据库并对结果排序

///对person数据表查询并且根据age自动降序或者升序排序
[WHC_ModelSqlite query:[Person class] order:@"by age desc/asc"];

6.查询数据库并对结果限制查询条数

/// 对person数据表查询并且并且限制查询数量为8
[WHC_ModelSqlite query:[Person class] limit:@"8"];

/// 对person数据表查询并且对查询列表偏移8并且限制查询数量为8
[WHC_ModelSqlite query:[Person class] limit:@"8 offset 8"];

7.修改数据库中模型对象演示(where 条件查询语法和sql where条件查询语法一样)

[WHC_ModelSqlite update:whc where:@"name = '吴海超2' OR age <= 18"];

8.删除数据库中模型对象演示(where条件查询为空则删除所有)

[WHC_ModelSqlite delete:[Person class] where:@"age = 25 AND name = '吴海超'"];

9.清空指定数据库演示

[WHC_ModelSqlite clear:[Person class]];

10.删除数据库演示

[WHC_ModelSqlite removeModel:[Person class]];

11.删除所有数据库演示

[WHC_ModelSqlite removeAllModel];

12.获取数据库本地路径演示

NSString * path = [WHC_ModelSqlite localPathWithModel:[Person class]];

13.获取数据库本地版本号演示

NSString * path = [WHC_ModelSqlite versionWithModel:[Person class]];

注意

  • 当模型类有新增/删除属性的时候需要在模型类里定义类方法(+ (NSString*)VERSION)修改模型类(数据库)版本号来表明有字段更新操作,库会根据这个VERSION变更智能检查并自动更新数据库字段,无需手动更新数据库字段

期待

  • 如果您在使用过程中有任何问题,欢迎issue me! 很乐意为您解答任何相关问题!

  • 与其给我点star,不如向我狠狠地抛来一个BUG!

  • 如果您想要更多的接口来自定义或者建议/意见,欢迎issue me!我会根据大家的需求提供更多的接口!

Api文档

/**
* 说明: 存储模型数组到本地(事务方式)
* @param model_array 模型数组对象(model_array 里对象类型要一致)
*/

+ (void)insertArray:(NSArray *)model_array;

/**
* 说明: 存储模型到本地
* @param model_object 模型对象
*/

+ (void)insert:(id)model_object;

/**
* 说明: 查询本地模型对象
* @param model_class 模型类
* @param where 查询条件(查询语法和SQL where 查询语法一样,where为空则查询所有)
* @return 查询模型对象数组
*/

+ (NSArray *)query:(Class)model_class where:(NSString *)where;

/**
* 说明: 查询本地模型对象
* @param model_class 模型类
* @param order 排序条件(排序语法和SQL order 查询语法一样,order为空则不排序)
* @return 查询模型对象数组
*/

/// example: [WHC_ModelSqlite query:[Person class] order:@"by age desc/asc"];
/// 对person数据表查询并且根据age自动降序或者升序排序

+ (NSArray *)query:(Class)model_class order:(NSString *)order;

/**
* 说明: 查询本地模型对象
* @param model_class 模型类
* @param limit 限制条件(限制语法和SQL limit 查询语法一样,limit为空则不限制查询)
* @return 查询模型对象数组
*/

/// example: [WHC_ModelSqlite query:[Person class] limit:@"8"];
/// 对person数据表查询并且并且限制查询数量为8
/// example: [WHC_ModelSqlite query:[Person class] limit:@"8 offset 8"];
/// 对person数据表查询并且对查询列表偏移8并且限制查询数量为8

+ (NSArray *)query:(Class)model_class limit:(NSString *)limit;

/**
* 说明: 查询本地模型对象
* @param model_class 模型类
* @param where 查询条件(查询语法和SQL where 查询语法一样,where为空则查询所有)
* @param order 排序条件(排序语法和SQL order 查询语法一样,order为空则不排序)
* @return 查询模型对象数组
*/

/// example: [WHC_ModelSqlite query:[Person class] where:@"age < 30" order:@"by age desc/asc"];
/// 对person数据表查询age小于30岁并且根据age自动降序或者升序排序

+ (NSArray *)query:(Class)model_class where:(NSString *)where order:(NSString *)order;

/**
* 说明: 查询本地模型对象
* @param model_class 模型类
* @param where 查询条件(查询语法和SQL where 查询语法一样,where为空则查询所有)
* @param limit 限制条件(限制语法和SQL limit 查询语法一样,limit为空则不限制查询)
* @return 查询模型对象数组
*/

/// example: [WHC_ModelSqlite query:[Person class] where:@"age <= 30" limit:@"8"];
/// 对person数据表查询age小于30岁并且限制查询数量为8
/// example: [WHC_ModelSqlite query:[Person class] where:@"age <= 30" limit:@"8 offset 8"];
/// 对person数据表查询age小于30岁并且对查询列表偏移8并且限制查询数量为8

+ (NSArray *)query:(Class)model_class where:(NSString *)where limit:(NSString *)limit;

/**
* 说明: 查询本地模型对象
* @param model_class 模型类
* @param order 排序条件(排序语法和SQL order 查询语法一样,order为空则不排序)
* @param limit 限制条件(限制语法和SQL limit 查询语法一样,limit为空则不限制查询)
* @return 查询模型对象数组
*/

/// example: [WHC_ModelSqlite query:[Person class] order:@"by age desc/asc" limit:@"8"];
/// 对person数据表查询并且根据age自动降序或者升序排序并且限制查询的数量为8
/// example: [WHC_ModelSqlite query:[Person class] order:@"by age desc/asc" limit:@"8 offset 8"];
/// 对person数据表查询并且根据age自动降序或者升序排序并且限制查询的数量为8偏移为8

+ (NSArray *)query:(Class)model_class order:(NSString *)order limit:(NSString *)limit;

/**
* 说明: 查询本地模型对象
* @param model_class 模型类
* @param where 查询条件(查询语法和SQL where 查询语法一样,where为空则查询所有)
* @param order 排序条件(排序语法和SQL order 查询语法一样,order为空则不排序)
* @param limit 限制条件(限制语法和SQL limit 查询语法一样,limit为空则不限制查询)
* @return 查询模型对象数组
*/

/// example: [WHC_ModelSqlite query:[Person class] where:@"age <= 30" order:@"by age desc/asc" limit:@"8"];
/// 对person数据表查询age小于30岁并且根据age自动降序或者升序排序并且限制查询的数量为8
/// example: [WHC_ModelSqlite query:[Person class] where:@"age <= 30" order:@"by age desc/asc" limit:@"8 offset 8"];
/// 对person数据表查询age小于30岁并且根据age自动降序或者升序排序并且限制查询的数量为8偏移为8

+ (NSArray *)query:(Class)model_class where:(NSString *)where order:(NSString *)order limit:(NSString *)limit;

/**
* 说明: 更新本地模型对象
* @param model_class 模型类
* @param where 查询条件(查询语法和SQL where 查询语法一样,where为空则更新所有)
*/

+ (void)update:(id)model_object where:(NSString *)where;

/**
* 说明: 清空本地模型对象
* @param model_class 模型类
*/

+ (void)clear:(Class)model_class;


/**
* 说明: 删除本地模型对象
* @param model_class 模型类
* @param where 查询条件(查询语法和SQL where 查询语法一样,where为空则删除所有)
*/

+ (void)delete:(Class)model_class where:(NSString *)where;

/**
* 说明: 清空所有本地模型数据库
*/

+ (void)removeAllModel;

/**
* 说明: 清空指定本地模型数据库
* @param model_class 模型类
*/

+ (void)removeModel:(Class)model_class;

/**
* 说明: 返回本地模型数据库路径
* @param model_class 模型类
* @return 路径
*/

+ (NSString *)localPathWithModel:(Class)model_class;

/**
* 说明: 返回本地模型数据库版本号
* @param model_class 模型类
* @return 版本号
*/
+ (NSString *)versionWithModel:(Class)model_class;

Licenses

All source code is licensed under the MIT License.

code4app

相关源码推荐:

我来说两句
*滑动验证:
所有评论(27)
AlonMessi 2017-1-5 10:52:58
code4app确实是个好地方,必须支持~
回复
littleRed 2017-1-5 10:54:13
虽不明,但觉厉...
回复
kengsir 2017-1-5 10:56:19
我是来学习的
回复
phoiu 2017-1-5 11:00:42
感谢分享,楼主V5~
回复
BlueManlove 2017-1-5 11:04:08
帮帮顶顶!!
回复
hellokenken 2017-1-5 11:11:33
不错不错,楼主辛苦了。。。
回复
code4app热心网友 2017-1-5 16:08:14
楼主用心了,内容非常精彩。
回复
code4app热心网友 2017-1-9 14:09:17
正需要啊,感谢楼主无私分享!
回复
PaulLewis 2017-1-9 17:24:02
精华内容,楼主V5!
回复
123下一页
提取码:  下载次数:41 状态:已购或VIP 售价:0(原价:10)金钱 下载权限:初级码农 
9636 1 41
联系我们
首页/微信公众账号投稿

帖子代码编辑/版权问题

QQ:435399051,742864542

如何获得代码达人称号?

代码贡献英雄榜
用户名 下载数
通过邮件订阅最新 Code4App 信息
上一条 /4 下一条
联系我们
关闭
合作电话:
13802416937
Email:
435399051@qq.com
商务市场合作/投稿
问题反馈及帮助
联系我们

广告投放| Github|申请友链|手机版|Code4App ( 粤ICP备15117877号-1 )

快速回复 返回顶部 返回列表