| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- package core
- // 条件接口
- type Condition interface {
- Fields() []string
- Match(row []byte, table *Table) bool
- }
- // ========== 查询操作 ==========
- //
- // 注意: 下面示例里 Eq/Gt/Lt/Ge/Le/In 的第三个参数一律写成 types.FieldType(0) ——
- // 该参数已废弃 (Go 无法标记单个参数废弃, 所以各构造函数都没写 "Deprecated:" 段落,
- // 否则会连函数本身一起被判为废弃): 比较一律按列的实际存储类型进行
- // (见 Table.compareColTypeFor), 传什么值结果都一样。
- //
- // 注意区分: Insert().Set("id", uint64(1), types.FieldType_Uint64) 的类型参数是必需的
- // —— 写入要靠它决定编码方式, 传 0 会直接报错。废弃的只有【条件构造函数】的第三个
- // 参数。
- /*
- // 简单查询
- rows, err := table.Query().
- Select("id", "name", "age").
- Where(Eq("status", uint64(1), types.FieldType(0))).
- OrderBy("age", true). // 降序
- Limit(10).
- Offset(20).
- Find()
- // 聚合查询
- count, err := table.Query().
- Where(Gt("age", uint64(18), types.FieldType(0))).
- Count()
- sum, err := table.Query().
- Where(Eq("status", uint64(1), types.FieldType(0))).
- Sum("score")
- maxAge, err := table.Query().
- Where(Eq("class", uint64(1), types.FieldType(0))).
- Max("age")
- // 分组聚合暂未支持: Query 没有 GroupBy/Having, 需要分组统计时
- // 只能按组逐次 Where 查询, 或用 Count/Sum/Max/Min 做全表聚合
- // ========== 更新操作 ==========
- affected, err := table.Update().
- Set("name", []byte("李四")).
- Set("age", uint64(26)).
- Where(Eq("id", uint64(1), types.FieldType(0))).
- Exec()
- // ========== 删除操作 ==========
- affected, err := table.Delete().
- Where(And(
- Lt("created_at", uint64(time.Now().Unix()), types.FieldType(0)),
- Eq("status", uint64(0), types.FieldType(0)),
- )).
- Exec()
- // ========== 插入操作 ==========
- rowID, err := table.Insert().
- Set("id", uint64(1), types.FieldType_Uint64).
- Set("name", []byte("张三"), types.FieldType_String).
- Set("age", uint64(25), types.FieldType_Uint64).
- Exec() */
|