pub async fn count<'e, 'c: 'e, DB, M, E>(
executor: E,
builder: QueryBuilder,
) -> Result<u64>where
DB: Database + DatabaseInfo,
for<'a> DB::Arguments<'a>: IntoArguments<'a, DB>,
M: Model,
E: Executor<'c, Database = DB> + Send,
String: Type<DB> + for<'b> Encode<'b, DB>,
i64: Type<DB> + for<'b> Encode<'b, DB> + for<'r> Decode<'r, DB>,
i32: Type<DB> + for<'b> Encode<'b, DB>,
i16: Type<DB> + for<'b> Encode<'b, DB>,
f64: Type<DB> + for<'b> Encode<'b, DB>,
f32: Type<DB> + for<'b> Encode<'b, DB>,
bool: Type<DB> + for<'b> Encode<'b, DB>,
Option<String>: Type<DB> + for<'b> Encode<'b, DB>,
usize: ColumnIndex<DB::Row>,Expand description
统计记录数量(泛型版本)
这是统一的泛型实现,支持所有实现了 DatabaseInfo 的数据库类型。
§类型参数
DB- 数据库类型(如sqlx::MySql,sqlx::Postgres,sqlx::Sqlite)M- 模型类型,必须实现ModeltraitE- 执行器类型,可以是连接池或事务
§参数
executor- 数据库执行器(连接池或事务)builder- 查询构建器
§返回值
返回符合条件的记录数量
§示例
ⓘ
use sqlxplus::{DatabaseInfo, crud, QueryBuilder};
// MySQL
let builder = QueryBuilder::new("SELECT * FROM user");
let count = crud::count::<sqlx::MySql, User, _>(pool, builder).await?;
// PostgreSQL
let builder = QueryBuilder::new("SELECT * FROM \"user\"");
let count = crud::count::<sqlx::Postgres, User, _>(pool, builder).await?;
// SQLite
let builder = QueryBuilder::new("SELECT * FROM user");
let count = crud::count::<sqlx::Sqlite, User, _>(pool, builder).await?;