| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 |
- 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_8byte) 的类型参数是必需的
- // —— 写入要靠它决定编码方式, 传 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")
- // 分组查询
- result, err := table.Query().
- Select("class", "AVG(score)").
- GroupBy("class").
- Having(Gt("AVG(score)", float64(80), types.FieldType(0))).
- Find()
- // ========== 更新操作 ==========
- 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_8byte).
- Set("name", []byte("张三"), types.FieldType_256byte).
- Set("age", uint64(25), types.FieldType_8byte).
- Exec() */
|