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

JQFMDB-FMDB的二次封装操作简便

JQFMDB是对FMDB的封装项目,具有线程安全、支持事务操作、操作简单等特性。它能直接操作Model和Dictionary,拓展性强且不侵入Model。安装方式包括Cocoapods和手动安装,在数据库的创建、表的创建、增删改查操作、多线程操作的线程安全保障以及事务操作等方面都...

访问官网 →

JQFMDB-FMDB的二次封装操作简便

一、项目简介

JQFMDB是对FMDB的封装项目。它具有多种优良特性,如线程安全、支持事务操作、操作简单,能直接对Model和Dictionary进行存储,并且拓展性强,不会侵入任何Model,也不需要实现特殊协议。

二、安装方式

  1. Cocoapods安装

    • 在Podfile中添加 pod 'JQFMDB'。
    • 执行 pod install 或 pod update。
    • 导入 <JQFMDB/JQFMDB.h>。
  2. 手动安装

    • 下载JQFMDB文件夹内的所有内容。
    • 将JQFMDB.h和JQFMDB.m以及FMDB添加(拖放)到工程。
    • 导入 “JQFMDB.h”。

三、使用方法

  1. 创建数据库

    • 单例方法:
      • +(instancetype)shareDatabase;,默认在NSDocumentDirectory下创建JQFMDB.sqlite。
      • +(instancetype)shareDatabase:(NSString)dbName;
      • +(instancetype)shareDatabase:(NSString)dbName path:(NSString)dbPath;,只要使用这三个方法任意一个创建成功,之后可使用三个中任意一个方法获得同一个实例。
    • init方法:
      • -(instancetype)initWithDBName:(NSString)dbName;
      • -(instancetype)initWithDBName:(NSString)dbName path:(NSString)dbPath;,操作几个数据库可以init方法获得不同实例。
  2. 创建表

    • 方式一(用Model创建表):定义类的属性,如Person类,然后使用 [db jq_createTable:@"user" dicOrModel:[Person class]]; 创建表,表的字段为类的有效属性。
    • 方式二(用字典创建表):例如 [db jq_createTable:@"user" dicOrModel:@{@"name":@"TEXT",@"age":@"INTEGER"}];,表的字段为字典的key,类型为字典的value。
  3. 增删改查操作

    • 插入:
      • 插入单条数据,支持model和dictionary,如 [db jq_insertTable:@"user" dicOrModel:person]; 或 [db jq_insertTable:@"user" dicOrModel:@{@"name":@"cleanmonkey",@"phoneNum":@(18866668888)}];。
      • 插入一组数据,也支持model和dictionary混合的数组,如 [db jq_insertTable:@"user" dicOrModelArray:mArr];。
      • 异步插入数据也可通过线程安全的方法实现。
    • 删除:
      • 根据条件语句删除数据,如 [db jq_deleteTable:@"user" whereFormat:@"WHERE rowid=(SELECT max(rowid)FROM user)"];。
      • 删除表中全部数据,如 [db jq_deleteAllDataFromTable:@"user"];。
    • 更新:
      • 根据条件更新数据,如 [db jq_updateTable:@"user" dicOrModel:@{@"name":@"testName"} whereFormat:@"WHERE rowid=(SELECT max(rowid)FROM user)"];。
      • 更新所有数据,如 [db jq_updateTable:@"user" dicOrModel:@{@"name":@"godlike"} whereFormat:nil];。
    • 查找:
      • 查找指定数据,如 NSArraypersonArr = [db jq_lookupTable:@"user" dicOrModel:[Person class] whereFormat:@"where name='cleanmonkey'"];。
      • 查找所有表中数据,如 NSArraypersonArr = [db jq_lookupTable:@"user" dicOrModel:[Person class] whereFormat:nil];。
  4. 多线程操作之线程安全

    要保证线程安全,可将操作放在 jq_inDatabase: 的block中执行,如 [db jq_inDatabase:^{[db jq_insertTable:@"user" dicOrModel:@{@"name":@"cleanmonkey"}];[db jq_lookupTable:@"user" dicOrModel:[Person class] whereFormat:@"where name='cleanmonkey'"];}];。

  5. 事务操作

    事务操作放在 jq_inTransaction: 的block中,例如转账操作中,如果某个环节失败可进行回滚操作。

四、项目总结

JQFMDB是一个功能丰富的FMDB封装项目,在数据库操作方面提供了简洁方便的方式。如果在使用过程中有任何问题或者需要新功能接口,可以提issue。期待大家在评论区留言,分享使用心得或者提出改进建议。

项目地址

GitHub链接直达