Skip to content

Latest commit

 

History

History
69 lines (52 loc) · 2.96 KB

README_CN.md

File metadata and controls

69 lines (52 loc) · 2.96 KB

SQLlin

SQLlin 是一款基于 DSL 及 Kotlin 符号处理器(KSP)实现的 Kotlin Multiplatform ORM 框架,其底层使用 SQLite。你可以使用它在 Kotlin 代码中编写能够被 Kotlin 编译器校验的 SQL 语句。示例如下:

private val db by lazy { Database(name = "person.db", path = path, version = 1) }

fun sample() {
    val tom = Person(age = 4, name = "Tom")
    val jerry = Person(age = 3, name = "Jerry")
    val jack = Person(age = 8, name = "Jack")
    val selectStatement: SelectStatement<Person> = db {
        PersonTable { table ->
            table INSERT listOf(tom, jerry, jack)
            table UPDATE SET { age = 5; name = "Tom" } WHERE ((age LTE 5) AND (name NEQ "Tom"))
            table DELETE WHERE ((age GTE 10) OR (name NEQ "Jerry"))
            table SELECT WHERE (age LTE 5) GROUP_BY age HAVING (upper(name) EQ "TOM") ORDER_BY (age to DESC) LIMIT 2 OFFSET 1
        }
    }
    selectStatement.getResult().forEach { person ->
        println(person.name)
    }
}

SQLlin 能够直接向数据库插入 Kotlin 对象,也能够直接从数据库查询 Kotlin 对象。其序列化与反序列化能力基于 kotlinx.serialization

SQLlin 支持如下平台:

  • Multiplatform Common
  • Android (6.0+)
  • JVM (Java 11+, since 1.2.0)
  • iOS (x64, arm64, simulatorArm64)
  • macOS (x64, arm64)
  • watchOS (x64, arm32, arm64, simulatorArm64, deviceArm64)
  • tvOS (x64, arm64, simulatorArm64)
  • Linux (x64, arm64)
  • Windows (mingwX64)

SQLlin 的架构设计如下图所示:

sqllin-architecture

SQLlin 拥有三个主要部分:sqllin-dslsqllin-driversqllin-processorsqllin-driver 是一套通用的多平台 SQLite 低阶 API,大多数情况下不推荐直接使用。 sqllin-dsl 是 SQL 语句的 DSL 实现并且它基于 sqllin-driversqllin-processor 使用 KSP 处理注解并生成用于与 sqllin-dsl 配合使用的代码。

你可以在下列文档中学习如何使用 sqllin-dsl

虽然不建议直接使用 sqllin-driver,但如果你想了解更多信息则可以阅读:

R8/ProGuard

由于 sqllin-dsl 的反序列化基于 kotlinx.serialization,R8/ProGuard 的配置请参考 kotlinx.serialization#Android

开源许可

本项目于 Apache License, Version 2.0 协议下开源。

查看 LICENSE 获取更多信息。