iOS平台强大Sqlite操做引擎开源库

前言

首先写这篇文章以前自我介绍一下,我叫吴海超(WHC)在iOS领域有丰富的开发架构经验Github之后我也会以文章的形式分享具备实战意义的文章给你们,但愿可以给你们有所帮助。git

主题

这期我想给你们讲讲iOS中的数据存储,目前数据库存储有Sqlite,CoreData,Realm。github

Sqlite存储

咱们都知道直接使用Sqlite存储很麻烦,基本都是模式代码,大多时候都是复制粘贴,改改字段名称和类型,可是这种无聊低级的方式会占用咱们太多调试时间,而且在对数据库迁移时不方便。sql

CoreData存储

苹果为了规范数据库存储这块推出了模型对象方式存储CoreData框架,这能让咱们项目数据层更Model化,让你们设计程序更有面向对象意识,可是这种方式一样也很麻烦并且步骤都是模式,时间长了还容易忘,最后要用的时候基本也是复杂粘贴,改改model文件字段名称和类型。数据库

Realm存储

最近Realm很火是开源的,而且支持多个平台,看介绍看起来很强大,可是我以为Realm体积太大,集成不是特别方便,一样使用也有限制,具体你们能够去官网看看,这里就不详细说了。swift

—————————————————————————————————————
上面对目前比较流行的数据存储方式作了简介,最后给个人感受都不知足个人要求,要么使用不够简单要么使用起来不方便,因此我就开始了本身造了WHC_ModelSqlite,最近刚更新。安全

WHC_ModelSqlite介绍

一. 采用runtime和Sqlite完美结合打造的强大数据库操做引擎开源库架构

二. 支持数据库级别加密框架

三. 替代直接使用Sqlite和CoreData以及FMDB低效率方式工具

四. 支持存储(NSArray,NSDictionary,NSDate,NSData,NSString,NSNumber,
Int,double,float,Bool,char)类型测试

五. 支持模型嵌套模型类存储到数据库和多表嵌套联查

六. 智能数据库数据迁移机制(动态删除/添加字段)

七. 全部数据库操做都是线程安全

八. 真正实现一行代码操做数据库

九. 支持model类继承

十. 支持自定义主键名称

用法

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;

/// 测试NSArray属性存储
Car * tempCar = [Car new];
tempCar.name = @"宝马";
tempCar.brand = @"林肯";
whc.array = @[@"1",@"2"];
whc.carArray = @[tempCar];

/// 测试NSDictionary属性存储
whc.dict = @{@"1":@"2"};
whc.dictCar = @{@"car": tempCar};

[WHC_ModelSqlite insert:whc];复制代码

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

NSArray * persons = [self makeArrayPerson];
[WHC_ModelSqlite insertArray:persons];复制代码

3.无条件查询(查询全部记录)数据库中模型类演示

NSArray * personArray = [WHC_ModelSqlite query:[Person class]];复制代码

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]];复制代码

结束

WHC_ModelSqlite开源地址:github.com/netyouli/WH…

  • 若是您在使用过程当中有任何问题,欢迎issue me!
  • 很乐意为您解答任何相关问题!
  • 与其给我点star,不如向我狠狠地抛来一个BUG!
  • 若是您想要更多的接口来自定义或者建议/意见,欢迎issue me!我会根据你们的需求提供更多的接口!

也借此机会推荐阅读本人其余优秀开源项目:Github

  1. AutoLayout开源库:github.com/netyouli/WH…
  2. Json转Model类Mac工具:github.com/netyouli/WH…
  3. 局部监听VC自动管理键盘:github.com/netyouli/WH…
  4. 扫描iOS/Android项目没有使用图片mac工具:github.com/netyouli/WH…
  5. 扫描iOS/Android项目没有使用的Class工具:github.com/netyouli/WH…

到了这里很是感谢您的阅读谢谢!

相关文章
相关标签/搜索