ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Gorm(表的操作以及索引的操作)

2022-05-16 18:00:56  阅读:202  来源: 互联网

标签:string 删除 fmt db gorm 索引 User 操作 Gorm


package main

import (
"fmt"
_ "github.com/jinzhu/gorm/dialects/mysql"
"github.com/jinzhu/gorm"
"time"
)

var (
//变量db 通过init直接初始化
db *gorm.DB
err error
dbinfo string
)

const (
//定义db的连接信息
dbuser string = "root"
dbpassword = "123456"
dbip = "39.105.114.198"
dbport = "3306"
database = "users"
)
//定义user结构体
type User struct {
//gorm model 会有createtime updatetime deletetime 分别代表创建时间 更新时间 删除时间 这里的删除是软删除 就是当你删除数据之后可以修改这个deletetime来表示此数据已经删除 不会真的删除 如果硬删除也可以
//主要是为了防止误操作删除 以及备份一段时间的数据
//这里需要注意一开始有gorm model的话就有没有的话中途应该是无法加的
//但是字段我们可以不断增加 这个字段添加之后 会根据你添加的字段在数据库的对应的表中添加字段 原数据不会消失
//这个只具备添加不具备删除字段
gorm.Model
Name string
Password string
Birthday time.Time
Tel string
Addr string
Desc string
}

//没有gormmodel 管理的话 我们需要自己通过字段来表明
//type User struct {
// Id int `gorm:"primary key ; auto increment"` // primary 表示主键 int的主键会自动增长 auto表示自增长
// Name string `gorm:"type:varchar(30);unique;not null;default:' ' "`
// Password string
// Birthday time.Time
// Tel string
// Addr string
// Desc string `gorm:"type:text;index:index_desc"`
//}

func init() {
//拼接数据库连接信息
dbinfo = fmt.Sprintf("%s:%s@(%s:%s)/%s?charset=utf8&parseTime=True&loc=Local",dbuser,dbpassword,dbip,dbport,database)
//初始化db
db,err = gorm.Open("mysql", dbinfo)
if err != nil {
fmt.Println("mysql打开失败",err)
return
}
//创建表关联user结构体
db.AutoMigrate(&User{})
}
//这个方法是在表的时候自定义表名

func (u *User) TableName() string {
return "test"
}

func main() {
//判断表是否存在gorm会默认的在表后面加复数表示多个
//所以虽然是user结构体但是表名是users
fmt.Println(db.HasTable(&User{}))
fmt.Println(db.HasTable("users"))
//createtable可以帮助我们创建表 需要传入结构体属性
//但是这个创建只是在开始的时候创建并没有办法中途帮助我们更新
//更新的话还是需要用结构体绑定表来做
//fmt.Println(db.CreateTable(&User{}))

//删除表 可以用结构体也可以用表名
//fmt.Println(db.DropTable(&User{}))
//fmt.Println(db.DropTable("users"))

//修改字段属性
//首先获取结构体属性 并且使用ModifyColumn 为字段修改数据库表结构 的字段类型
db.Model(&User{}).ModifyColumn("Birthday","date")
//删除字段
//db.Model(&User{}).DropColumn("Birthday")
//添加索引
db.Model(&User{}).AddIndex("idx_name","name")
//添加联合索引
db.Model(&User{}).AddIndex("idx_name_addr","name","addr")
//删除索引
db.Model(&User{}).RemoveIndex("idx_name")
//设置唯一索引
db.Model(&User{}).AddUniqueIndex("idx_name","name")
db.Close()

}

原文链接:https://blog.csdn.net/weixin_45413603/article/details/106971358

标签:string,删除,fmt,db,gorm,索引,User,操作,Gorm
来源: https://www.cnblogs.com/cheyunhua/p/16277863.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有