【亲测免费】 Exposed 框架实战指南
2026-01-16 09:44:55作者:殷蕙予
项目介绍
Exposed 是一款专为 Kotlin 设计的轻量级 SQL 库,它以 JDBC 驱动为基础,提供了一种类型安全且灵活的方式来操作数据库。不同于传统的 ORM 框架,Exposed 提供了两种访问数据库的方式:一种是通过类型安全的 SQL 裁剪 DSL(领域特定语言),另一种则是简洁的数据访问对象(DAO)模式。此框架以其模仿能力强大的吉祥物——乌贼——为灵感,意在无缝融入任何开发环境,使数据库交互更加自然和高效。
项目快速启动
要迅速开始使用 Exposed,首先确保你的开发环境已配置好 Kotlin 和 Gradle。以下是如何引入 Exposed 到你的项目中并执行一个简单查询的步骤:
步骤1:添加依赖
在你的 build.gradle.kts 文件中,指定 Exposed 的版本并添加相应的依赖。这里我们以核心库和 JDBC 实现为例:
dependencies {
implementation("org.jetbrains.exposed:exposed-core:$exposedVersion")
implementation("org.jetbrains.exposed:exposed-jdbc:$exposedVersion")
}
将 $exposedVersion 替换为最新版本号,例如 0.53.0。
步骤2:配置数据库连接
定义你的数据库连接配置,通常这会放在应用的初始化阶段:
import org.jetbrains.exposed.sql.Database
val db = Database.connect(
url = "jdbc:mysql://localhost/dbname",
driver = "com.mysql.jdbc.Driver",
user = "username",
password = "password"
)
步骤3:创建表及查询示例
创建一个简单的表结构并进行基本查询:
import org.jetbrains.exposed.sql.*
import org.jetbrains.exposed.sql.transactions.transaction
// 定义一个表
object Users : Table() {
val id = integer("id").autoIncrement().primaryKey()
val name = varchar("name", length = 50)
}
fun main() {
// 在事务中执行数据库操作
transaction(db) {
// 创建表
SchemaUtils.create(Users)
// 插入数据
Users.insert { it[name] = "John Doe" }
// 查询数据
val johnDoe = Users.select { Users.name eq "John Doe" }.firstOrNull()?.get(Users.name)
println(johnDoe)
}
}
应用案例和最佳实践
- 类型安全的SQL构建:利用 Koltin 的强类型系统,减少 SQL 注入风险。
- DAO模式简化数据操作:创建 DAO 类来封装所有数据库操作,保持代码整洁。
- 事务管理:始终在明确的事务边界内执行数据库更改,保证数据一致性。
- 插件和扩展:如使用
exposed-spring-boot-starter无缝集成到 Spring Boot 中,或利用exposed-json处理 JSON 数据型等。
典型生态项目
- Spring Boot 集成: 使用
exposed-spring-boot-starter可轻松在 Spring Boot 应用中启用 Exposed,实现数据库访问层的高度整合。 - 异步支持:虽然 Exposed 核心不直接支持异步操作,但可以结合 Kotlin Coroutines 使用第三方库如 Exposed-Ktor 来实现在异步环境中的应用。
- 时间处理增强:通过
exposed-java-time或exposed-kotlin-datetime支持现代日期时间API,提高时间处理的便利性和准确性。
记住,深入学习 Exposed 包括理解其提供的不同模块及其适用场景,比如加密数据处理(exposed-crypt)、货币支持(exposed-money)等,这些都能帮助你构建更为复杂和健壮的应用。
登录后查看全文
热门项目推荐
相关项目推荐
atomcodeClaude Code 的开源替代方案。连接任意大模型,编辑代码,运行命令,自动验证 — 全自动执行。用 Rust 构建,极致性能。 | An open-source alternative to Claude Code. Connect any LLM, edit code, run commands, and verify changes — autonomously. Built in Rust for speed. Get StartedRust0147- DDeepSeek-V4-ProDeepSeek-V4-Pro(总参数 1.6 万亿,激活 49B)面向复杂推理和高级编程任务,在代码竞赛、数学推理、Agent 工作流等场景表现优异,性能接近国际前沿闭源模型。Python00
GLM-5.1GLM-5.1是智谱迄今最智能的旗舰模型,也是目前全球最强的开源模型。GLM-5.1大大提高了代码能力,在完成长程任务方面提升尤为显著。和此前分钟级交互的模型不同,它能够在一次任务中独立、持续工作超过8小时,期间自主规划、执行、自我进化,最终交付完整的工程级成果。Jinja00
auto-devAutoDev 是一个 AI 驱动的辅助编程插件。AutoDev 支持一键生成测试、代码、提交信息等,还能够与您的需求管理系统(例如Jira、Trello、Github Issue 等)直接对接。 在IDE 中,您只需简单点击,AutoDev 会根据您的需求自动为您生成代码。Kotlin03
Intern-S2-PreviewIntern-S2-Preview,这是一款高效的350亿参数科学多模态基础模型。除了常规的参数与数据规模扩展外,Intern-S2-Preview探索了任务扩展:通过提升科学任务的难度、多样性与覆盖范围,进一步释放模型能力。Python00
skillhubopenJiuwen 生态的 Skill 托管与分发开源方案,支持自建与可选 ClawHub 兼容。Python0111
项目优选
收起
暂无描述
Dockerfile
731
4.73 K
Ascend Extension for PyTorch
Python
609
785
openEuler内核是openEuler操作系统的核心,既是系统性能与稳定性的基石,也是连接处理器、设备与服务的桥梁。
C
433
391
本项目是CANN提供的数学类基础计算算子库,实现网络在NPU上加速计算。
C++
996
1 K
昇腾LLM分布式训练框架
Python
166
197
暂无简介
Dart
983
249
deepin linux kernel
C
29
16
华为昇腾面向大规模分布式训练的多模态大模型套件,支撑多模态生成、多模态理解。
Python
145
237
旨在打造算法先进、性能卓越、高效敏捷、安全可靠的密码套件,通过轻量级、可剪裁的软件技术架构满足各行业不同场景的多样化要求,让密码技术应用更简单,同时探索后量子等先进算法创新实践,构建密码前沿技术底座!
C
1.1 K
611
Claude Code 的开源替代方案。连接任意大模型,编辑代码,运行命令,自动验证 — 全自动执行。用 Rust 构建,极致性能。 | An open-source alternative to Claude Code. Connect any LLM, edit code, run commands, and verify changes — autonomously. Built in Rust for speed.
Get Started
Rust
1.14 K
146