# 分表实现 首先定义一个`gorm`的模型,然后实现`shadring.Model`接口,比如如下示例 ```go // ShardingTable 返回增删改时候操作的数据表 func (model *CdrLog) ShardingTable(scene string) string { return model.TableName() } // ShardingTables 返回查询时候一个范围内的表 func (model *CdrLog) ShardingTables(ctx *sharding.Context) []string { var ( timestamp int64 ) timeRange := make([]int64, 0) values := ctx.FindColumnValues("start_stamp") if len(values) == 0 { values = ctx.FindColumnValues("create_stamp") } if len(values) > 0 { for _, v := range values { timestamp, _ = strconv.ParseInt(fmt.Sprint(v), 10, 64) timeRange = append(timeRange, timestamp) } } return shard.DateTableNames(ctx.Context(), "cdr_logs", shard.ShardTypeDateMonth, timeRange) } ``` `ShardingTable`方法是操作增删改的是回调具体表名的方法 `ShardingTables`方法是操作查询的时候,通过查询条件返回的表名的方法