sql_builder
一个 100% 对齐 huandu/go-sqlbuilder 设计的 Rust crate。它提供:
Args+Flavor:支持?、$1、@p1、:1等多种占位符策略,并且允许通过Flavor跟随不同 SQL 方言;- 完整的各类 Builder:
SelectBuilder、InsertBuilder、UpdateBuilder、DeleteBuilder、UnionBuilder、CTEBuilder、CTEQueryBuilder、CreateTableBuilder,同时内建查、插、改、删、聚合、CTE、Union 和 clone 重用模式; Build/Buildf/BuildNamed:支持${name}、$0、$?、$$、Raw、List、Tuple等语法,并支持嵌套 builder、named arg 重用、literal$等特殊行为;Struct+field_mapper:通过macro_rules!生成FieldMeta,支持db/fieldtag/fieldopt/fieldas、with_tag/without_tag、自定义 field mapper(如 snake_case/kebab_case/prefix/suffix)并兼容SqlValuer;Scan+ScanCell:仿照 Go 的Addr实现数据扫描;interpolate:为不支持参数化的驱动提供 SQL 插值,涵盖多 flavor 的字符串/数字/日期/布尔等转义;SqlValuer:支持延迟计算参数,兼容自定义数据源;- 全部示例/单测对齐 Go:138 条单测 + doc-test,覆盖 README 中的 builder、Struct、CTE、Union、field mapper、命名参数等场景。
典型用法
创建 SELECT
use SelectBuilder;
let mut sb = new;
sb.select.from;
sb.where_;
let = sb.build;
assert_eq!;
assert_eq!;
嵌套 Builder / Buildf
use buildf;
let mut sb = new;
sb.select.from;
let explain = buildf;
let = explain.build;
assert!;
named 参数
use ;
let mut named = new;
named.insert;
named.insert;
named.insert;
let = build_named
.build;
assert!;
Struct ORM + field mapper
use ;
let _= set_default_field_mapper_scoped;
sql_struct!
let s = new;
let = s.select_from.build;
assert!;
CTE 与 Union
use ;
let mut users_cte = new;
let mut query = new;
query.select.from.where_;
users_cte.table.as_;
let cte = with;
let mut sb = cte.select;
sb.from;
let = sb.build;
assert!;
维护与测试
许可证
MIT