链氪巴士
  1. 首页
  2. 站点导航
  3. 文章
  4. 快讯
  5. 软件
  6. 书刊
  7. 关于

WHC_ModelSqliteKit: 专业的ORM数据库操作开源库

WHC_ModelSqliteKit是一个线程安全且高性能的模型对象存储Sqlite开源库,采用runtime和Sqlite结合打造强大的ORM操作引擎。支持多种数据类型,能实现一行代码操作数据库,如存储、查询、修改、删除等操作,支持数据库加密、模型嵌套存储与查询、智能更新数据...

访问官网 →

WHC_ModelSqliteKit: 专业的ORM数据库操作开源库

一、项目简介

WHC_ModelSqliteKit是一个专业的数据库存储解决方案。它是一个线程安全、高性能的模型对象存储Sqlite开源库。这个库采用runtime和Sqlite完美结合打造强大的数据库ORM操作引擎开源库。它支持数据库级别加密,易用性强,真正能实现一行代码操作数据库,还可以替代直接使用Sqlite和CoreData以及FMDB的低效率方式。它支持多种数据类型,如(NSMutableDictionary, NSMutableArray,NSArray, NSDictionary, NSDate, NSData, NSString, NSNumber, Int, double, float, Bool, char)等。在查询方面也很灵活,支持使用Sqlite函数进行查询,支持忽略模型类属性存储数据表中。对于模型类的存储,支持模型嵌套继承模型类存储到数据库和多表嵌套复杂查询。并且能够根据数据库模型类实现的WHC_SqliteInfo协议返回的版本号来智能更新数据库字段(动态删除/添加)。

二、核心技术

  1. 利用runtime和Sqlite结合构建ORM操作引擎。
  2. 基于WHC_SqliteInfo协议实现数据库字段的智能更新,根据协议返回的版本号进行动态的数据库字段管理,如删除或添加字段。
  3. 支持多种数据类型的存储操作,确保对不同类型数据在数据库中的有效处理。

三、实践案例

  1. 存储嵌套模型对象到数据库,例如创建Person对象,其中嵌套car、school等对象,这些对象又可以继续嵌套其他对象,然后使用[WHCSqlite insert:whc]将其存储到数据库。
  2. 存储批量模型对象,如通过[WHCSqlite inserts:persons]将一组Person对象存储到数据库。
  3. 进行各种查询操作:
  • 无条件查询,如[WHCSqlite query:[Person class]]查询数据库中所有Person类的记录。
  • 使用Sqlite函数查询,像[WHCSqlite query:[Person class] func:@”name,length(name)”]获取Person表所有name和name长度。
  • 条件查询,例如[WHCSqlite query:[Person class] where:@”name=’吴海超2’OR age<=18″]。
  • 查询并排序,如[WHCSqlite query:[Person class] order:@”by age desc/asc”]。
  • 查询并限制条数,像[WHCSqlite query:[Person class] limit:@”8″]。
  1. 数据修改操作,如[WHCSqlite update:whc where:@”name=’吴海超2’OR age<=18″]更新整条记录,[WHCSqlite update:Person.self value:@”name=’whc’,age=100″ where:@”age>25″]更新指定字段。
  2. 数据删除操作,如[WHCSqlite delete:[Person class] where:@”age=25 AND name=’吴海超’”]删除数据库中满足条件的模型对象,[WHCSqlite clear:[Person class]]清空指定数据库,[WHCSqlite removeModel:[Person class]]删除数据库,[WHCSqlite removeAllModel]删除所有数据库。
  3. 还可以进行获取数据库本地路径、版本号等操作,如[WHCSqlitelocalPathWithModel:[Person class]]获取数据库本地路径,[WHCSqliteversionWithModel:[Person class]]获取数据库本地版本号。

四、项目总结

WHC_ModelSqliteKit是一个功能强大、使用方便的数据库操作开源库。它在数据库存储、查询、更新、删除等多方面提供了高效且易用的解决方案。如果你在使用过程中有任何问题,欢迎在issue中提出,也欢迎提出接口自定义的需求或者给出建议/意见。期待大家积极留言参与讨论。

项目地址

GitHub链接直达