Skip to content

Col<T> ​

字段描述符,类型安全的列引用。配合宏生成的 Entity.col() 使用。

构造 ​

cangjie
let idCol = Col<Int64>("id")
let nameCol = Col<String>("name")

通常通过宏生成的结构体获取:

cangjie
let cols = User.col()
cols.id    // Col<Int64>
cols.name  // Col<String>
cols.email // Col<String>

比较操作符 ​

cangjie
Col<T> == T    // Binary(Column, Eq, Value)
Col<T> != T    // Binary(Column, Ne, Value)
Col<T> >  T    // Binary(Column, Gt, Value)
Col<T> <  T    // Binary(Column, Lt, Value)
Col<T> >= T    // Binary(Column, Ge, Value)
Col<T> <= T    // Binary(Column, Le, Value)

// 列对列比较
Col<T> == Col<T>
Col<T> != Col<T>

方法 ​

asc() / desc() ​

cangjie
User.col().id.asc()   // Ordered(Column("id"), "ASC")
User.col().id.desc()  // Ordered(Column("id"), "DESC")

anyOf() / notAnyOf() ​

cangjie
User.col().id.anyOf([1, 2, 3])        // 等价 IN 查询(展开为 id = 1 OR id = 2 OR id = 3)
User.col().id.notAnyOf([4, 5])        // 等价 NOT IN(展开为 id != 4 AND id != 5)

空数组时 anyOf 生成 1 = 0(恒不匹配),notAnyOf 生成 1 = 1(恒匹配)。

extend Col<String> ​

like() ​

cangjie
User.col().name.like("%lice%")  // Binary(Column, Like, Value)
// 生成: "name" LIKE ?
// 参数: "%lice%"

extend Col<Bool> ​

isTrue() / isFalse() ​

cangjie
User.col().vip.isTrue()   // Unary(IsNotNull, Column("vip"))
User.col().vip.isFalse()  // Binary(Column("vip"), Eq, Value(false))

MIT License