pub struct Query { /* private fields */ }Expand description
类型化裸 SQL 查询构建器。
由 query_as! 宏生成,等效于 SQLx 的 query_as!(Record, "SELECT ..."):
在编译期验证 SQL 语法(db-verify feature 下连真 DB 验证列名),
运行时将结果行按列名映射到 T: FromQueryResult。
§用法
ⓘ
use sz_orm_core::queryable::QueryAs;
#[derive(FromQueryResult)]
struct User { id: i64, name: String }
let q = QueryAs::<User>::new("SELECT id, name FROM users WHERE id = ?");
let users: Vec<User> = q.fetch_all(&mut conn).await?;
let one: User = QueryAs::<User>::new("SELECT id, name FROM users LIMIT 1")
.fetch_one(&mut conn)
.await?;无类型裸 SQL 查询对象(SQLx query! 的 sz-orm 等效物)。
与 QueryAs<T> 的区别:Query 返回 Vec<HashMap<String, Value>>,
不绑定具体结构体类型;QueryAs<T> 将行映射为 T: FromQueryResult。
§用法
ⓘ
use sz_orm_core::queryable::Query;
let q = Query::new("SELECT id, name FROM users WHERE id = ?");
let rows = q.fetch_all(&mut conn).await?;Implementations§
Source§impl Query
impl Query
Sourcepub async fn fetch_all(
&self,
conn: &mut dyn Connection,
) -> Result<Vec<HashMap<String, Value>>, DbError>
pub async fn fetch_all( &self, conn: &mut dyn Connection, ) -> Result<Vec<HashMap<String, Value>>, DbError>
执行查询,返回所有行(Vec<HashMap<列名, Value>>)
Sourcepub async fn fetch_one(
&self,
conn: &mut dyn Connection,
) -> Result<HashMap<String, Value>, DbError>
pub async fn fetch_one( &self, conn: &mut dyn Connection, ) -> Result<HashMap<String, Value>, DbError>
执行查询,期望恰好一行;0 行或多行均返回错误
Sourcepub async fn fetch_optional(
&self,
conn: &mut dyn Connection,
) -> Result<Option<HashMap<String, Value>>, DbError>
pub async fn fetch_optional( &self, conn: &mut dyn Connection, ) -> Result<Option<HashMap<String, Value>>, DbError>
执行查询,返回 0 或 1 行;0 行返回 Ok(None)
Trait Implementations§
Auto Trait Implementations§
impl Freeze for Query
impl RefUnwindSafe for Query
impl Send for Query
impl Sync for Query
impl Unpin for Query
impl UnsafeUnpin for Query
impl UnwindSafe for Query
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more