Skip to main content

Crate sz_orm_query_builder

Crate sz_orm_query_builder 

Source
Expand description

§SZ-ORM QueryBuilder — 独立 SQL 构造器(sea-query 风格)

一个不绑定 Model 的纯 SQL 构造器,可独立编译、独立发布到 crates.io。

设计灵感来自 sea-query

  • 与 ORM 解耦:不依赖 Model trait,纯 SQL 构造
  • 多方言支持:通过 DbType 适配 MySQL/PostgreSQL/SQLite/Oracle
  • 链式 API:所有方法返回 Self
  • 零运行时开销:构造过程零数据库连接

§快速入门

use sz_orm_core::DbType;
use sz_orm_query_builder::{Query, SelectQuery};

// SELECT
let sql = Query::select()
    .column("id")
    .column("name")
    .from("users")
    .where_clause("age > 18")
    .order_by("id", true)
    .limit(10)
    .build(DbType::MySQL);
assert!(sql.contains("SELECT"));
assert!(sql.contains("FROM `users`"));

// INSERT
let sql = Query::insert()
    .into_table("users")
    .value("name", "'Alice'")
    .value("age", "30")
    .build();
assert!(sql.contains("INSERT INTO `users`"));

// UPDATE
let sql = Query::update()
    .table("users")
    .set("name", "'Bob'")
    .where_clause("id = 1")
    .build();
assert!(sql.contains("UPDATE `users`"));

// DELETE
let sql = Query::delete()
    .from_table("users")
    .where_clause("id = 1")
    .build();
assert!(sql.contains("DELETE FROM"));

§与 sz-orm-core::QueryBuilder 的区别

特性sz-orm-core::QueryBuilder<M>sz-orm-query-builder::Query
绑定 Model是(<M: Model>
类型安全编译期表/列校验运行时字符串
适用场景ORM 完整流程纯 SQL 构造、动态查询
依赖sz-orm-core 全部仅 dialect 模块
独立发布

Structs§

BuiltQuery
参数化查询构造结果
DeleteQuery
DELETE 查询构造器
InsertQuery
INSERT 查询构造器
Query
查询构造器入口
SelectQuery
SELECT 查询构造器
SetQuery
集合运算查询,支持链式追加多个 SELECT 并以 UNION/INTERSECT/EXCEPT 连接。
UpdateQuery
UPDATE 查询构造器

Enums§

SetOperator
SQL 集合运算符类型。
UpsertStrategy
Upsert(插入或更新)策略