pub struct JsonQuery { /* private fields */ }Expand description
JSON 字段查询构造器
提供 think-orm 风格的链式 JSON 字段查询 API,支持 MySQL/PostgreSQL/SQLite 三种方言。
Implementations§
Source§impl JsonQuery
impl JsonQuery
Sourcepub fn new(db_type: DbType, column: impl Into<String>) -> Self
pub fn new(db_type: DbType, column: impl Into<String>) -> Self
创建 JSON 查询构造器
db_type:目标数据库类型column:JSON 列名
Sourcepub fn build_extract(&self) -> String
pub fn build_extract(&self) -> String
构建取字段表达式(左侧值,不含操作符与右侧值)
- MySQL:
col->'$.field' - PostgreSQL:
col->>'field' - SQLite:
json_extract(col, '$.field')
当路径为空时(未调用 path() 或传入空字符串),直接引用列自身,
避免生成 '$.'(MySQL 非法路径)或 '' 等非法语法。
Sourcepub fn between_i64(self, low: i64, high: i64) -> String
pub fn between_i64(self, low: i64, high: i64) -> String
BETWEEN 整数范围(包含两端)
Sourcepub fn is_not_null(self) -> String
pub fn is_not_null(self) -> String
IS NOT NULL
Sourcepub fn has_key(self) -> String
pub fn has_key(self) -> String
键存在性检查(路径下有键)
- MySQL:
JSON_CONTAINS_PATH(col, 'one', '$.path') - PostgreSQL:
col ? 'path'(顶层键)/col #? '{path}'(路径) - SQLite:
json_type(col, '$.path') IS NOT NULL
Sourcepub fn json_type_eq(self, expected_type: &str) -> String
pub fn json_type_eq(self, expected_type: &str) -> String
JSON 类型检查(判断 JSON 值类型)
- MySQL:
JSON_TYPE(col->'$.path') = 'INTEGER' - PostgreSQL:
json_typeof(col#>>'{path}') = 'integer' - SQLite:
json_type(col, '$.path') = 'integer'
expected_type 应为小写(‘integer’/‘string’/‘boolean’/‘array’/‘object’/‘null’)。
在 MySQL 中会被自动转为大写。
Sourcepub fn contains(self, value: &str) -> String
pub fn contains(self, value: &str) -> String
数组包含某元素(JSON_CONTAINS / @> / json_extract LIKE)
- MySQL:
JSON_CONTAINS(col, '"v"', '$.path') - PostgreSQL:
col @> '{"path":"v"}'(简化:用 path 拼接) - SQLite:
EXISTS (SELECT 1 FROM json_each(json_extract(col, '$.path')) WHERE value = 'v')
Sourcepub fn array_length_eq(self, length: i64) -> String
pub fn array_length_eq(self, length: i64) -> String
数组长度比较
- MySQL:
JSON_LENGTH(col->'$.path') = N - PG:
jsonb_array_length(col#>>'{a,b}') = N - SQLite:
json_array_length(json_extract(col, '$.path')) = N
Auto Trait Implementations§
impl Freeze for JsonQuery
impl RefUnwindSafe for JsonQuery
impl Send for JsonQuery
impl Sync for JsonQuery
impl Unpin for JsonQuery
impl UnsafeUnpin for JsonQuery
impl UnwindSafe for JsonQuery
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