分享
  1. 首页
  2. 文章

golang - gorm

中柠檬 · · 20673 次点击 · · 开始浏览
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

gorm github gitbook

概述

package main
import (
	"github.com/jinzhu/gorm"
	_ "github.com/jinzhu/gorm/dialects/mysql"
)
type Product struct {
	ID uint `gorm:"primary_key"`
	Code string
	Price uint
}
func main() {
	db,err := gorm.Open("mysql","root:root@tcp(localhost:3306)/gorm")
	if err != nil {
		panic("failed to connect database")
	}
	defer db.Close()
	// 自动迁移表,生成的表名为 products
	db.AutoMigrate(&Product{})
	// Create
	db.Create(&Product{Code: "L1212", Price: 1000})
	// Read
	var product Product
	db.First(&product, 1) // find product with id 1
	db.First(&product, "code = ?", "L1212") // find product with code l1212
	// Update
	db.Model(&product).Update("Price", 2000)
	 //Delete
	db.Delete(&product)
}

模型定义

修改表名

type Product struct {
	ID uint
	Code string
	Price uint
}
//修改默认表名
func (Product) TableName() string {
	return "product2"
}
type Email struct {
	ID int
	Email string
}
func main() {
	db, err := gorm.Open("mysql", "root:root@tcp(localhost:3306)/gorm")
	if err != nil {
		panic("failed to connect database")
	}
	defer db.Close()
	//设置默认表名前缀
	gorm.DefaultTableNameHandler = func(db *gorm.DB, defaultTableName string) string {
		return "prefix_" + defaultTableName
	}
	//自动生成表
	db.AutoMigrate(&Product{}, &Email{})
}

设置字段

type Product struct {
	ID uint `gorm:"primary_key:id"`
	Num int `gorm:"AUTO_INCREMENT:number"`
	Code string
	Price uint
	Tag []Tag `gorm:"many2many:tag;"`
	Date time.Time `gorm:"-"`
}
type Email struct {
	ID int `gorm:"primary_key:id"`
	UserID int `gorm:"not null;index"`
	Email string `gorm:"type:varchar(100);unique_index"`
	Subscribed bool
}
type Tag struct {
	Name string
}
func main() {
	db, err := gorm.Open("mysql", "root:root@tcp(localhost:3306)/gorm")
	if err != nil {
		panic("failed to connect database")
	}
	defer db.Close()
	gorm.DefaultTableNameHandler = func(db *gorm.DB, defaultTableName string) string {
		return "demo_" + defaultTableName
	}
	db.AutoMigrate(&Product{}, &Email{})
}

设置外键字段

type Profile struct {
	gorm.Model
	Refer int
	Name string
}
type User struct {
	gorm.Model
	Profile Profile `gorm:"ForeignKey:ProfileID;AssociationForeignKey:Refer"`
	ProfileID int
}

增删改查


有疑问加站长微信联系(非本文作者)

本文来自:开源中国博客

感谢作者:中柠檬

查看原文:golang - gorm

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

关注微信
20673 次点击
被以下专栏收入,发现更多相似内容
暂无回复
添加一条新回复 (您需要 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传

用户登录

没有账号?注册
(追記) (追記ここまで)

今日阅读排行

    加载中
(追記) (追記ここまで)

一周阅读排行

    加载中

关注我

  • 扫码关注领全套学习资料 关注微信公众号
  • 加入 QQ 群:
    • 192706294(已满)
    • 731990104(已满)
    • 798786647(已满)
    • 729884609(已满)
    • 977810755(已满)
    • 815126783(已满)
    • 812540095(已满)
    • 1006366459(已满)
    • 692541889

  • 关注微信公众号
  • 加入微信群:liuxiaoyan-s,备注入群
  • 也欢迎加入知识星球 Go粉丝们(免费)

给该专栏投稿 写篇新文章

每篇文章有总共有 5 次投稿机会

收入到我管理的专栏 新建专栏