sz-orm-query-builder 1.2.2

Type-safe query builder AST with dialect-aware SQL rendering
Documentation

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 模块
独立发布