Expand description
§pgbatis — 轻量级异步 PostgreSQL CRUD 辅助库
基于 tokio-postgres + deadpool-postgres,通过派生宏 #[derive(PGCRUD)]
快速为结构体生成 CRUD 能力,并提供链式条件构造器(Wrapper)和可选逻辑删除支持。
§快速开始
ⓘ
use pgbatis::pgmacro::PGCRUD;
use serde::{Deserialize, Serialize};
#[derive(PGCRUD, Serialize, Deserialize, Clone, Debug, Default)]
pub struct User {
pub id: Option<String>,
pub name: Option<String>,
pub age: Option<i32>,
}
// 1. 初始化连接(必须在任何数据库操作之前调用)
pgbatis::link("127.0.0.1", 5432, "user", "pass", "mydb", 10).await?;
// 2. 保存
let user = User { id: Some("1".into()), name: Some("Alice".into()), age: Some(30) };
pgbatis::save(&user, None, None).await?;
// 3. 条件查询
use pgbatis::Wrapper;
let wrapper = Wrapper::new().eq(&"name", &"Alice").set_pages(1, 10);
let page = pgbatis::fetch_page::<User>(wrapper, None, None).await?;§核心概念
- Parameters trait:实体必须实现的 trait,通常由
#[derive(PGCRUD)]自动生成 - Wrapper:链式 WHERE 条件、排序、分页构造器
- 逻辑删除:默认启用,读操作自动过滤已删除数据,
remove()默认软删除
Re-exports§
pub use plugin::logic_delete::LogicDelete;pub use plugin::logic_delete::LogicDeletePlugin;pub use wrapper::Wrapper;pub use pgmacro;pub use tokio_postgres;
Modules§
Structs§
- Client
- An asynchronous PostgreSQL client.
- NoTls
- A
MakeTlsConnectandTlsConnectimplementation which simply returns an error. - Page
Hash - HashMap 形式的分页查询结果。
- PageT
- 类型化分页查询结果。
- Pgbatis
- 全局数据库连接管理器。
- Row
- A row of data returned from the database by a query.
- Transaction
Batch Param - 事务批量操作的参数。
Constants§
- LOG_
SPACE - 日志对齐空格常量,用于格式化 SQL 日志输出中的缩进。
Traits§
- Column
Ext - 列名提取 trait,用于将类型安全的列标识转换为 SQL 列名字符串。
- Parameters
- 实体参数 trait —— 定义 CRUD 操作所需的元数据与 SQL 生成能力。
- ToSql
- A trait for types that can be converted into Postgres values.
Functions§
- check_
row_ by_ column - 检查表中是否存在满足列值条件的记录。
- check_
row_ wrap - 检查表中是否存在满足
Wrapper条件的记录。 - execute
- 执行原生 SQL(INSERT / UPDATE / DELETE 等非查询语句)。
- fetch
- 通过一个字段执行删除操作 单表查询,返回实体列表(不分页)。
- fetch_
one - 单表查询单条数据。
- fetch_
page - 单表分页查询。
- fetch_
with_ recoder_ field - 单表查询,返回
Vec<HashMap<String, Value>>(不分页)。 - format_
like - 为 LIKE 查询格式化字符串:左右各加
%。 - format_
like_ left - 为 LIKE 查询格式化字符串:左侧加
%(后缀匹配)。 - format_
like_ right - 为 LIKE 查询格式化字符串:右侧加
%(前缀匹配)。 - link
- 初始化 PostgreSQL 连接池。必须在任何数据库操作之前调用。
- permanent_
deletion - 强制物理删除(
DELETE FROM),忽略逻辑删除插件配置。 - ping
- 数据库连接探活。
- query
- 执行原生 SQL 查询,返回
Vec<HashMap<String, Value>>。 - query_
one - 执行原生 SQL 查询,返回单行
HashMap<String, Value>。 - query_
page - 执行原生 SQL 分页查询,返回
PageHash。 - query_t
- 执行原生 SQL 查询,返回类型化实体列表。
- remove
- 删除操作。默认行为取决于逻辑删除插件配置:
- save
- 保存实体到数据库(执行 INSERT 操作)。
- set_
unlogic_ delete_ table - 将指定表加入逻辑删除排除名单。
- transaction_
batch - 事务批量操作:在同一个事务中执行多条 SQL(可跨表)。
- transaction_
delete_ and_ save - 事务操作:先按指定列值删除,再批量插入新数据。
- update
- 执行 UPDATE 操作。