本专题将带你体验 SeaORM 和 axum 开发。
SeaORM 是一个关系型 ORM,用于帮助你像使用动态语言那样,在 Rust 中构建 Web 服务。
SeaORM 特点
-
异步:基于 SQLx,SeaORM 天生就支持异步。
-
动态:基于 SeaQuery,SeaORM 让你无需 与 ORM 作斗争,而轻松构建复杂的查询。
-
可测试:使用模拟连接来编写单元测试,以便测试你的逻辑。
-
面向服务:快速构建在 API 中加入、过滤、排序和分页数据的服务。
SeaORM 术语
SeaORM术语 | 对应的数据库术语 |
---|---|
Schema | 数据库(Database ) |
Entity | 数据表及关系(Table and Relation ) |
Model | 数据表(Table ) |
Relation | 关系(Relation ) |
Column | 字段的定义 |
PrimaryKey | 主键(Primary key ) |
Attribute | 字段(Column ) |
ActiveModel | 可写操作 |
Model
实例只能用于只读操作;如果需要进行写操作,需要使用 ActiveModel
的实例。
示例说明
本专题通过一个简化的文章系统对 SeaORM 和 axum 开发进行讲解。
数据库和运行时
本专题使用 PostgreSQL 数据库,以及 tokio 异步运行时。
数据结构
分类(category
)
字段 | 说明 |
---|---|
id | 主键。自增 |
name | 分类名称 |
文章(article
)
字段 | 说明 |
---|---|
id | 主键。自增 |
category_id | 外键。文章所属的分类ID |
title | 文章标题 |
contet | 文章内容 |
创建项目
使用 cargo
创建好项目之后,加入以下依赖:
示例代码
-
本专题代码位于AxumCourse/axum-with-seaorm仓库