# Data
与外部交互的基础层：包含 数据库、Redis、MQ 等

## 如何编写数据库的dao
1. 注入 data *Data
2. 获取 Db 对象时，禁止直接取属性，必须使用 GetDb 方法，此方法解析了上下文 Context 中是否开启了事务

## 事务的使用
```go
var err error
err = Exec(ctx, func(ctx context.Context) error {
    err = GoodsCreate(ctx)
    if err != nil {
        return err
    }
    return GoodsCashCreate(ctx)
})
```