package main
import (
"fmt"
"github.com/jinzhu/gorm"
_ "github.com/jinzhu/gorm/dialects/mysql"
)
type DataBaseSettings struct {
DBType string
UserName string
PassWord string
Host string
DBName string
TablePrefix string
Charset string
Parsetime bool
MaxIdleConns int
MaxOpenConns int
}
type ServerSettings struct {
RunMode string
}
var ServerSetting = &ServerSettings{ RunMode: "debug" }
func NewDBEngine(settings *DataBaseSettings) (*gorm.DB, error) {
dsn := fmt.Sprintf("%s:%s@tcp(%s)/%s?charset=%s&parseTime=%t&loc=Local",
settings.UserName,
settings.PassWord,
settings.Host,
settings.DBName,
settings.Charset,
settings.Parsetime,
)
db, err := gorm.Open(settings.DBType, dsn)
if err != nil {
return nil, err
}
if ServerSetting.RunMode == "debug" {
db.LogMode(true)
}
db.SingularTable(true)
db.DB().SetMaxIdleConns(settings.MaxIdleConns)
db.DB().SetMaxOpenConns(settings.MaxOpenConns)
return db, nil
}
func main() {
db, err := NewDBEngine(&DataBaseSettings{
DBType: "mysql",
UserName: "root",
PassWord: "xxxx",
Host: "127.0.0.1:3306",
DBName: "test",
TablePrefix: "",
Charset: "utf8",
Parsetime: false,
MaxIdleConns: 10,
MaxOpenConns: 10,
})
if err != nil {
panic(err)
}
fmt.Println(db.DB().Exec("insert into student(id, name) values(1,\"张三\")"))
}
摘自
《Go语言编程之旅——一起用Go做项目》