在初始化方法里面的完成xorm.Engine对象的初始化,供其它操作类进行组合
package tool import ( "CloudRestaurant/model" _ "github.com/go-sql-driver/mysql" "github.com/go-xorm/xorm" ) var DbEngine *Orm type Orm struct { *xorm.Engine } // OrmEngine 初始化数据库连接,并返回一个Orm对象 // 此函数在main.go中调用 func OrmEngine(cfg *Config) (*Orm, error) { // 数据库配置 database := cfg.Database // 数据库连接信息 conn := database.User + ":" + database.Password + "@tcp(" + database.Host + ":" + database.Port + ")/" + database.DbName + "?charset=" + database.Charset // 初始化数据库连接 engine, err := xorm.NewEngine(database.Driver, conn) if err != nil { return nil, err } // 输出SQL语句 engine.ShowSQL(database.ShowSql) // 同步数据库结构与数据库表 err = engine.Sync2(new(model.SmsCode)) if err != nil { return nil, err } orm := new(Orm) orm.Engine = engine DbEngine = orm return orm, nil }
package main import ( "github.com/gin-gonic/gin" "CloudRestaurant/tool" "CloudRestaurant/controller" "github.com/goes/logger" ) func main() { cfg, err := tool.ParseConfig("./config/app.json") if err != nil { panic(err.Error()) } _, err = tool.OrmEngine(cfg) if err != nil { logger.Error(err.Error()) return } app := gin.Default() registerRouter(app) app.Run(cfg.AppHost + ":" + cfg.AppPort) } //路由设置 func registerRouter(router *gin.Engine) { new(controller.HelloController).Router(router) new(controller.MemberController).Router(router) }
在入口文件进行数据的库的初始化
package dao import ( "CloudRestaurant/model" "CloudRestaurant/tool" "github.com/goes/logger" ) // 直接组合到Dao struct 中供其调用 type MemberDao struct { *tool.Orm } func (md *MemberDao) InsertCode(sms model.SmsCode) int64 { result, err := md.InsertOne(&sms) if err != nil { logger.Error(err.Error()) } return result }