Gorm笔记

1 篇文章 0 订阅

Gorm中文文档
Gorm 英文文档

导入包

import (
	_ "github.com/go-sql-driver/mysql"
	"github.com/jinzhu/gorm"
)

连接mysql

db,err:=gorm.Open("mysql","account:pwd@tcp(host:port)/db?charset=utf8")

禁用复数形式

db.SingularTable(true)

为表名添加前缀

gorm.DefaultTableNameHandler= func(db *gorm.DB, defaultTableName string) string {
		return "test_" +defaultTableName
	}

设置打印日志

db.LogMode(true)

定义回调函数

例如

type Project struct {
	ID int `gorm:"primary_key"`
	Name string `gorm:"type:varchar(64);not null"`
	Title string `gorm:"type:varchar(64);unique;not null"`
	Runtime string `gorm:"type:varchar(64);"`
	Type int `gorm:"default:0;"`
	LastTime time.Time
	Dingmachince string `gorm:"type:varchar(255);"`
	Filename string `gorm:"type:varchar(255);"`
	Ossaddress string `gorm:"size:512"`
	UpdateTime time.Time
	CreateTime time.Time
	IsDelete int `gorm:"default:0;not null"`
	Desc string `gorm:"type:varchar(255);"`
	Codeinfo string `gorm:"type:longText"`
	Ossfilename string `gorm:"type:varchar(64);"`
}

当创建、修改对象时CreateTime 和UpdateTime 自动更新

func (t *Project) AfterCreate( scope * gorm.Scope)  {
	fmt.Println("AfterCreate回调函数")
	return

}

func (t *Project) BeforeCreate( scope * gorm.Scope)  {
	fmt.Println("BeforeCreate回调函数")
	if !scope.HasError() {
		now := gorm.NowFunc()

		if createdAtField, ok := scope.FieldByName("CreateTime"); ok {
			if createdAtField.IsBlank {
				createdAtField.Set(now)
			}
		}

		if updatedAtField, ok := scope.FieldByName("UpdateTime"); ok {
			if updatedAtField.IsBlank {
				updatedAtField.Set(now)
			}
		}
	}

	return

}
func (t *Project) AfterSave( scope * gorm.Scope)  {
	fmt.Println("AfterSave回调函数")
	return

}
func (t *Project) BeforeSave( scope * gorm.Scope)  {
	fmt.Println("BeforeSave回调函数")
	return

}

func (t *Project) BeforeUpdate( scope * gorm.Scope)  {
	fmt.Println("BeforeUpdate回调函数")
	if _, ok := scope.Get("gorm:update_column"); !ok {
		scope.SetColumn("UpdateTime", gorm.NowFunc())
	}
	return

}

func (t *Project) AfterUpdate( scope * gorm.Scope)  {
	fmt.Println("AfterUpdate回调函数")
}

func createNew(db *gorm.DB)  {
	title:=GetRandomString(6)
	filename:=GetRandomString(5)+".py"
	ding:=GetRandomString(10)
	name:=GetRandomString(6)
	var project Project
	project=Project{Name:name,Title:title,Runtime:"11 * * * *",Dingmachince:ding,Filename:filename}
	//a:=db.NewRecord(project)
	//fmt.Println(a)
	db.Create(&project)

}

创建表时,添加后缀

db.Set("grom:table_options","ENGINE=InnoDB")

添加一个对象和更新一个对象

在这里插入图片描述

自定义回调函数

db.Callback().Create().Register("gorm:before_create1", beforeCreate1)

设置最大连接数和最大闲置数

默认0表示不限制

db.DB().SetMaxIdleConns(2000)
db.DB().SetMaxOpenConns(1000)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值