怎么做自助交易网站,软件外包项目网站,三明网站建设公司,生鲜网站开发【1】ORM: 即Object-Relational Mapping,它的作用是在关系型数据库和对象之间作一个映射#xff0c;这样我们在具体的操作数据库的时候#xff0c;就不需要再去和复杂的SQL语句打交道#xff0c;只要像平时操作对象一样操作它们就可以了。
【2】GORM gorm是go语言的一个orm…【1】ORM: 即Object-Relational Mapping,它的作用是在关系型数据库和对象之间作一个映射这样我们在具体的操作数据库的时候就不需要再去和复杂的SQL语句打交道只要像平时操作对象一样操作它们就可以了。
【2】GORM gorm是go语言的一个orm框架Golang写的开发人员友好的ORM库。
【3】中文文档 https://gorm.io/zh_CN/docs/
【4】安装GORM 录入安装GORM的命令
go get -u gorm.io/gorm
go get -u gorm.io/driver/mysql 案列 【1】创建一个数据库testgorm
package mainimport (fmtgorm.io/driver/mysql //引入mysql驱动gorm.io/gorm
)func main() {//连接数据库//参数指的是数据库的设置信息用户名密码tcp(ip:port)/数据库名字?charsetutf8parseTimeTruelocLocal//charsetutf8设置字符集//parseTimeTrue为了处理time.Time//locLocal时区设置与本地时区保持一致dsn : root:roottcp(127.0.0.1:3306)/testgorm?charsetutf8parseTimeTruelocLocaldb, err : gorm.Open(mysql.Open(dsn), gorm.Config{})if err ! nil {panic(err) //如果出错后续代码没有必要执行想让程序中断panic来执行即可}//创建表方式一通常情况下数据库中新建的表的名字是结构体名字的复数形式例如结构体User表名usersif err : db.AutoMigrate(User{}); err ! nil {panic(err)}//创建表方式二Table方法可以指定你要创建的数据库的表名if err : db.Table(user).AutoMigrate(User{}); err ! nil {panic(err)}//删除表if !db.Migrator().HasTable(User{}) {fmt.Println(table does not exist)} else {if err : db.Migrator().DropTable(User{}); err ! nil {panic(err)}}}// 定义结构体
type User struct {Age intName string
}【2】表名自定义规则
//【1】模型名称和表名的映射规则
//1、如果模型名没有驼峰命名那么表名就是模型名小写复数形式如模型名User---》表名users
//2、如果模型名有驼峰命名那么表名就是大写变小写并在前面加下划线最后加复数形式如模型名UserInfo---》表名user_infos
//3、如果模型名有连续的大写字母那么表名就是连续的大写字母变小写驼峰前加下划线字母变小写最后加复数形式如模型名DBUserInfo---》表名db_user_infos
type User struct {Age intName string
}type MyUser struct {Age intName string
}//自定义表名
func (MyUser) TableName() string {return test_my_user
}【3】gorm.Model匿名字段
只需要再自己的模型中指定gorm.Model匿名字段即可在数据库表中包含四个字段IDCreatedAtUpdatedAtDeletedAt ID:主键自增长 CreatedAt用于存储记录的创建时间 UpdatedAt用于存储记录的修改时间 DeletedAt用于存储记录的删除时间 代码
type MyUser2 struct {gorm.ModelAge intName string
} 【4】通过结构体标签gorm来实现表的约束
(1)-: 忽略不映射这个字段 eg:gorm:”适合:一些冗余字段不想在数据库中体现只想在结构体中体现
(2)primary key:主键eg:gorm:primary key (3)AUTO INCREMENT:自增 eg:gorm:AUTO INCREMENT
(4)not null:不为空默认为空 eg:gorm:not null (5)index:索引,eg:gorm:index 创建索引并命名:eg:gorm:index:idx name_code
(6)unique index:唯一索引 eg:gorm:unique index唯一性索引unique index和一般索引normal index最大的差异就是在索引列上增加了一层唯一约束。添加唯一性索引的数据列可以为空但是只要存在数据值就必须是唯一的。
(7)unique:唯-eg:gorm:unique
(8)column:指定列名eg:gorm:column:user name
(9)size:字符串长度,默认为255 eg:gorm:size:10 (10)defaultdefault:男”默认值 (11)type:设置sql类型 eg:gorm:type:int(2) PS:多个属性值之间用分号分隔
代码
type Student struct {StuID int gorm:primary_key;AUTO_INCREMENTName string gorm:not nullAge int gorm:unique_index //gorm:index:name_indexEmail string gorm:uniqueSex string gorm:column:gender;size:10Desc string gorm:-Classno string gorm:type:int
}