【发布时间】:2014-01-22 12:17:24
【问题描述】:
我使用Gorp 进行数据库访问,Gorp 有一个标准的DbMap 类型,以及一个Transaction 类型,当您希望能够回滚时。这两种类型都实现了SqlExecutor 接口。
因此,我正在针对SqlExecutor 接口进行编程,因此我可以根据需要使用事务,而无需更改我的代码。
然后我初始化一个 Gorp DbMap 或 Transaction 并将其作为字段属性传入。问题是我需要一个指向 Gorp“对象”的指针,否则如果我使用 Transaction 如果 Gorp“对象”是按值而不是引用传递的,我将如何回滚。
然后我会收到一条消息,例如
r.Gorp.Get undefined (type *gorp.SqlExecutor has no field or method Get)
当我尝试使用我的代码时。如何调用方法?
代码示例如下。
package repositories
import (
"github.com/coopernurse/gorp"
)
type Repository struct {
Gorp *gorp.SqlExecutor // <<<< Need pointer so I can rollback
}
func (r *Repository) GetById(i interface{}, key interface{}) interface{} {
obj, err := r.Gorp.Get(i, key)
if err != nil {
panic(err)
}
return obj
}
【问题讨论】:
标签: go