gorm 初探

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做项目》

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

metabit

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值