pub struct QueryBuilder { /* private fields */ }Expand description
查询构建器
Implementations§
Source§impl QueryBuilder
impl QueryBuilder
pub fn new(table: String, engine: Arc<RwLock<MemoryEngine>>) -> Self
pub fn eq(self, field: &str, value: DbValue) -> Self
pub fn ne(self, field: &str, value: DbValue) -> Self
pub fn lt(self, field: &str, value: DbValue) -> Self
pub fn le(self, field: &str, value: DbValue) -> Self
pub fn gt(self, field: &str, value: DbValue) -> Self
pub fn ge(self, field: &str, value: DbValue) -> Self
pub fn in_list(self, field: &str, values: Vec<DbValue>) -> Self
pub fn contains(self, field: &str, value: &str) -> Self
Sourcepub fn is_not_null(self, field: &str) -> Self
pub fn is_not_null(self, field: &str) -> Self
IS NOT NULL 条件:查询字段不为 NULL 的行
pub fn and(self, other: QueryBuilder) -> Self
Sourcepub fn or(self, left: FilterExpr, right: FilterExpr) -> Self
pub fn or(self, left: FilterExpr, right: FilterExpr) -> Self
OR 条件:将两个过滤条件用 OR 连接
§示例
忽略编译的示例,完整代码请参见测试文件:
// 查询 age > 18 OR status = 'vip' 的用户
db.query("users")
.or(
FilterExpr::Gt { field: "age".to_string(), value: DbValue::integer(18) },
FilterExpr::Eq { field: "status".to_string(), value: DbValue::text("vip") }
)
.execute()?;Sourcepub fn not(self) -> NotBuilder
pub fn not(self) -> NotBuilder
NOT 条件:对一个过滤条件取反
§示例
简单条件 - 只对下一个条件生效:
// 查询 age != 18 的用户
db.query("users")
.not()
.eq("age", DbValue::integer(18))
.execute()?;复杂条件 - 使用 expr() 传入 FilterExpr:
// 查询 NOT (age > 18 AND status = 'active')
db.query("users")
.not()
.expr(FilterExpr::And(
Box::new(FilterExpr::Gt { field: "age".to_string(), value: DbValue::integer(18) }),
Box::new(FilterExpr::Eq { field: "status".to_string(), value: DbValue::text("active") })
))
.execute()?;Sourcepub fn where_expr(self, expr: FilterExpr) -> Self
pub fn where_expr(self, expr: FilterExpr) -> Self
添加任意过滤表达式
§示例
忽略编译的示例,完整代码请参见测试文件:
// 添加 OR 条件
db.query("users")
.where_expr(FilterExpr::Or(
Box::new(FilterExpr::Gt { field: "age".to_string(), value: DbValue::integer(18) }),
Box::new(FilterExpr::Eq { field: "status".to_string(), value: DbValue::text("vip") })
))
.execute()?;Sourcepub fn or_simple<F1, F2>(self, left_builder: F1, right_builder: F2) -> Self
pub fn or_simple<F1, F2>(self, left_builder: F1, right_builder: F2) -> Self
构建 OR 条件(便捷方法)
§示例
忽略编译的示例,完整代码请参见测试文件:
// 查询 age > 18 OR age < 10 的用户
db.query("users")
.or_simple(|q| q.gt("age", DbValue::integer(18)), |q| q.lt("age", DbValue::integer(10)))
.execute()?;Sourcepub fn not_simple<F>(self, builder: F) -> Self
pub fn not_simple<F>(self, builder: F) -> Self
构建 NOT 条件(便捷方法)
§示例
忽略编译的示例,完整代码请参见测试文件:
// 查询 status != 'deleted' 的用户
db.query("users")
.not_simple(|q| q.eq("status", DbValue::text("deleted")))
.execute()?;pub fn order_by(self, field: &str, order: Order) -> Self
pub fn limit(self, limit: usize) -> Self
pub fn offset(self, offset: usize) -> Self
pub fn inner_join( self, right_table: &str, left_field: &str, right_field: &str, ) -> Self
pub fn left_join( self, right_table: &str, left_field: &str, right_field: &str, ) -> Self
pub fn right_join( self, right_table: &str, left_field: &str, right_field: &str, ) -> Self
pub fn full_join( self, right_table: &str, left_field: &str, right_field: &str, ) -> Self
pub fn select(self, columns: &[&str]) -> Self
Sourcepub fn count_column(self, column: &str) -> Self
pub fn count_column(self, column: &str) -> Self
COUNT(column) - 统计非 NULL 行数
Auto Trait Implementations§
impl Freeze for QueryBuilder
impl RefUnwindSafe for QueryBuilder
impl Send for QueryBuilder
impl Sync for QueryBuilder
impl Unpin for QueryBuilder
impl UnsafeUnpin for QueryBuilder
impl UnwindSafe for QueryBuilder
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