package engine import ( "fmt" "github.com/gin-gonic/gin" "github.com/xormplus/xorm" ) type ApiEngine struct { OrmEngine *xorm.Engine GinEngine *gin.Engine listen_addr string } func NewApiEngine(driverName, dataSourceName string, addr string) *ApiEngine { engine := &ApiEngine{} engine.OrmEngine, _ = xorm.NewEngine(driverName, dataSourceName) initOrmEngine(engine.OrmEngine, driverName) engine.GinEngine = gin.Default() engine.listen_addr = addr return engine } func initOrmEngine(orm *xorm.Engine, driverName string) { sqldir := "./sql/" + driverName //注册SqlMap配置,xml格式 err := orm.RegisterSqlMap(xorm.Xml(sqldir, ".xml")) printError(err) //注册SqlTemplate配置,使用Pongo2模板引擎 err = orm.RegisterSqlTemplate(xorm.Pongo2(sqldir, ".stpl")) printError(err) //注册SqlTemplate配置,使用Jet模板引擎 err = orm.RegisterSqlTemplate(xorm.Jet(sqldir, ".jet")) printError(err) //注册SqlTemplate配置,使用html/template模板引擎 err = orm.RegisterSqlTemplate(xorm.Default(sqldir, ".tpl")) printError(err) } func printError(err error) { if err != nil { fmt.Println(err.Error()) } } func (g *ApiEngine) SyncDb(beans ...interface{}) error { return g.OrmEngine.Sync2(beans) } func (g *ApiEngine) Run() { g.GinEngine.Run(g.listen_addr) }