OHMySQL
OHMySQL 可以连接到远程或本地 MySQL 数据库并执行 CRUD 操作。框架基于 MySQL C API,但您无需深入了解底层。以下图表表示一个通用架构。逻辑(保存、编辑、删除等)在应用程序中汇总。数据库只是一个共享存储。
功能
平台
平台 | 支持 |
---|---|
iOS | 14.0+ |
macOS | 11.0+ |
macOS催化剂 | 14.0+ |
watchOS | 8.0+ |
tvOS | 15.0+ |
项目支持
我希望支持这个库并扩展API和功能。如果你给我一些钱
安装
阅读如何在项目中作为依赖项安装库的文档。
用法
连接到数据库。
let user = MySQLConfiguration(userName: "root",
password: "root",
serverName: "localhost",
dbName: "dbname",
port: 3306,
socket: "/mysql/mysql.sock")
let coordinator = MySQLStoreCoordinator(user: user!)
coordinator.encoding = .UTF8MB4
coordinator.connect()
要结束连接
coordinator.disconnect()
查询上下文
要执行查询,您必须创建上下文
let context = MySQLQueryContext()
context.storeCoordinator = coordinator
执行查询
let dropQueryString = "DROP TABLE `MyTable`"
let dropQueryRequest = MySQLQueryRequest(queryString: dropQueryString)
try? context.execute(dropQueryRequest)
SELECT
响应包含字典数组。
let query = MySQLQueryRequestFactory.select("tasks", condition: nil)
let response = try? context.executeQueryRequestAndFetchResult(query)
INSERT
let query = MySQLQueryRequestFactory.insert("tasks", set: ["name": "Something", "desctiption": "new task"])
try? context.execute(query)
UPDATE
let query = MySQLQueryRequestFactory.update("tasks", set: ["name": "Something"], condition: "id=7")
try? context.execute(query)
删除
let query = MySQLQueryRequestFactory.delete("tasks", condition: "id=10")
try? context.execute(query)
连接 (JOINs)
你可以执行4种类型的连接 - INNER
、RIGHT
、LEFT
、FULL
。
let query = MySQLQueryRequestFactory.joinType(OHJoinInner, fromTable: "tasks", columnNames: ["id", "name", "description"], joinOn: ["subtasks": "tasks.id=subtasks.parentId"])
let result = try? context.executeQueryRequestAndFetchResult(query)
对象映射
您需要为您的模型实现 OHMappingProtocol
协议。该库只具有主要的映射逻辑,因此我建议您自己编写映射逻辑。如果您使用 Swift,则不能使用基本数字类型(Int
、Double
),只能使用 NSNumber
(由于运行时原因)。
context.insertObject(task)
try? context.save()
您可以轻松地更新/删除对象。
let task = Task()
task.name = "sample"
context.updateObject(task)
context.deleteObject(task)
try? context.save()
通讯
授权
见授权文件。