Fork me on GitHub

gorm 使用

基本使用

package main
 
import (
    "database/sql"
    "fmt"
    "github.com/jinzhu/gorm"
    _ "github.com/jinzhu/gorm/dialects/mysql"
    "time"
)
 
type User struct {
    gorm.Model
    UserId int64 `gorm:"index"`
    Birtheday time.Time
    Age  int  `gorm:"column:age"`
    Name string `gorm:"size:255;index:idx_name_add_id"`
    Num  int  `gorm:"AUTO_INCREMENT"`
    Email string `gorm:"type:varchar(100);unique_index"`
    AddressID sql.NullInt64 `gorm:"index:idx_name_add_id"`
    IgnoreMe int  `gorm:"_"`
    Description string `gorm:"size:2019;comment:'用户描述字段'"`
    Status string `gorm:"type:enum('published', 'pending', 'deleted');default:'pending'"`
}
 
//设置表名,默认是结构体的名的复数形式
func (User) TableName() string {
    return "VIP_USER"
}
 
func main() {
	MysqlCustomDialog, err = gorm.Open("mysql", fmt.Sprintf("%v:%v@tcp(%v:%v)/%v?charset=utf8&parseTime=True&loc=Local",
		global.MysqlCustomDialog.User,
		global.MysqlCustomDialog.PassWord,
		global.MysqlCustomDialog.Host,
		global.MysqlCustomDialog.Port,
		global.MysqlCustomDialog.DB,
	))
	if err != nil {
		global.Logger.Errorf("mysql connect err %v", err)
		return err
	}

 
    if db.HasTable(&User{}) { //判断表是否存在
        db.AutoMigrate(&User{}) //存在就自动适配表,也就说原先没字段的就增加字段
    } else {
        db.CreateTable(&User{}) //不存在就创建新表
    }
}

扩展

1.
posted @   myboran  阅读(62)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
点击右上角即可分享
微信分享提示