项目介绍:
前言
我们从0开始封了一个面向OC模型的数据库就要结束了,开发工作其实在上一篇就做完了,之后做了一些小的优化以及代码的调整来发布这篇文章,先看一下我们最终形态。
-
直接: 调用sqlite原生API操作数据库,没有中间框架。
-
易用: 一行代码实现数据库增删查改操作。
-
多元: 支持所有基本数据类型、集合类型以及自定义模型。
-
智能: 一行代码,智能实现插入、更新、升级、迁移数据。
-
强大: 0代码支持数组嵌套模型、嵌套字典,字典嵌套模型等相互嵌套。
-
灵活: 支持多种查询、删除操作,支持使用sql语句查询、删除。
-
还原: 存入数据库时为A模型,查询的数据一定还给你A模型。
我们支持的类型有:
所有的基本数据类型(int,float),NSNumber,NSArray,NSMutableArray,NSDictionary,NSMutableDictionary,
UIImage,NSURL,UIColor,NSSet,NSRange,NSAttributedString,NSData,自定义模型,以及数组、字典、模型相互嵌套
这篇文章,将全方位介绍我们数据库–CWDB以及如何使用!
架构
类名 | 作用 |
---|---|
CWModelProtocol.h | 需要遵守以及实现的协议方法(用户关注) |
CWSqliteModelTool.h、CWSqliteModelTool.m | 本库操作数据库的所有API(用户关注) |
CWDatabase.h、CWDatabase.m | 直接调用sqlite底层API的类 |
CWModelTool.h、CWModelTool.m | 处理模型的工具类 |
CWSqliteTableTool.h、CWSqliteTableTool. | 处理数据库表的工具类 |
在使用前,我们先模拟一个对应的使用场景,要解决什么问题,这个场景也是我们demo中的演示代码所展现的(你可以打开demo在Clasess目录下找到它)。
我们希望保存几所学校的资料到数据库。
-
用一个类来表示学校的资料,资料有学校id,名字,整个学校的所有班级,最好的班级,最优秀的老师的资料。
-
有对应类来表示班级的资料,班级里面有班级号,名称,班级的所有老师,班级的所有学生,班主任以及班长。
-
又分别有两个类保存学生和老师的资料
以上的层级关系有模型嵌套数组嵌套模型的场景、模型嵌套模型再嵌套数据再嵌套模型的场景也就模型直接嵌套模型的场景。
然后我们使用工厂方法来快速构造各个模型,用来搭建整个学校
-
首先,所有的学生都是身高168,年龄20,体重100,性格温和乖巧的女同学
-
其次,所有的老师都是身高155,年龄28,体重100的御姐老师
-
**再次,我给每个班级添加5名松岛