株洲网站制作,网络营销策划论文,门户网站建设询价函,电商推广专员做什么Gorm连接Mysql数据库及其语法 文章目录 Gorm连接Mysql数据库及其语法前期工作找到Gorm的github项目简单了解相关MySQL语法 启动数据库定义数据库模型注意点Gorm Model定义结构体标签(tag)支持的结构体标记#xff08;Struct tags#xff09;关联相关标记#xff08;tagsStruct tags关联相关标记tags主键Primary Key表名Table Name列名Column Name时间戳跟踪CreatedAtUpdatedAtDeletedAt 语法 前期工作
找到Gorm的github项目
项目地址: github.com/jinzhu/gorm[http://github.com/jinzhu/gorm]拉取项目: go get -u github.com/jinzhu/gorm
简单了解相关MySQL语法 启动数据库
前提: 想要连接数据库必须手动开启数据,以及手动创建数据库连接数据库: 语法: db,err : gorm.Open(....)例子: db, err : gorm.Open(mysql, root:password(127.0.0.1:3306)/数据库?charsetutf8mb4)解析: mysql:表示你要连接数据库的类型root: 登陆数据库的用户名(默认root)password: 自己的密码数据库表示要操作的数据库(127.0.0.1:3306): 表示需要连接的数据库本地地址,假如不记得端口是哪个可以在登录mysql后使用show global variables like port;查看端口?charsetutf8mb4:表示解析成的字节码 定义数据库模型注意点 1.结构体的名称必须首字母大写并且和数据库表名对应 2.结构体中的字段名称首字母必须大写 3.默认情况表名是结构体名称的复数形式 4.可以使用结构体中自定义方法TableName改变结构体的默认表名称 //默认来说User结构体应该操作users表的
//利用下述方法就可任意操作数据库中的表格
func (User)TableName()string{return user
}Gorm Model定义 作用: 模型结构体嵌入了 gorm.Model,那么就自动拥有上述这些字段和方法,可以避免重复编写,提高开发效率。 默认字段: type Model struct {ID uint gorm:primary_key //Id,一般默认id为主键(理解为表的第一个数据)CreatedAt time.Time //创建 时间戳UpdatedAt time.Time //更新 时间戳DeletedAt *time.Time sql:index //删除 时间戳
}gorm:primary_key这里的被称为tag标签 结构体标签(tag)
支持的结构体标记Struct tags 关联相关标记tags 主键Primary Key
GORM 默认会使用名为ID的字段作为表的主键。
type User struct {ID string // 名为ID的字段会默认作为表的主键Name string
}// 使用AnimalID作为主键
type Animal struct {AnimalID int64 gorm:primary_keyName stringAge int64
}表名Table Name
表名默认就是结构体名称的复数例如
type User struct {} // 默认表名是 users// 将 User 的表名设置为 profiles
func (User) TableName() string {return profiles
}func (u User) TableName() string {if u.Role admin {return admin_users} else {return users}
}// 禁用默认表名的复数形式如果置为 true则 User 的默认表名是 user
db.SingularTable(true)也可以通过Table()指定表名
// 使用User结构体创建名为deleted_users的表
db.Table(deleted_users).CreateTable(User{})var deleted_users []User
db.Table(deleted_users).Find(deleted_users)SELECT * FROM deleted_users;db.Table(deleted_users).Where(name ?, jinzhu).Delete()DELETE FROM deleted_users WHERE name jinzhu;GORM还支持更改默认表名称规则
gorm.DefaultTableNameHandler func (db *gorm.DB, defaultTableName string) string {return prefix_ defaultTableName;
}列名Column Name
列名由字段名称进行下划线分割来生成
type User struct {ID uint // column name is idName string // column name is nameBirthday time.Time // column name is birthdayCreatedAt time.Time // column name is created_at
}可以使用结构体tag指定列名
type Animal struct {AnimalId int64 gorm:column:beast_id // set column name to beast_idBirthday time.Time gorm:column:day_of_the_beast // set column name to day_of_the_beastAge int64 gorm:column:age_of_the_beast // set column name to age_of_the_beast
}时间戳跟踪
CreatedAt
如果模型有 CreatedAt字段该字段的值将会是初次创建记录的时间。
db.Create(user) // CreatedAt将会是当前时间// 可以使用Update方法来改变CreateAt的值
db.Model(user).Update(CreatedAt, time.Now())UpdatedAt
如果模型有UpdatedAt字段该字段的值将会是每次更新记录的时间。
db.Save(user) // UpdatedAt将会是当前时间db.Model(user).Update(name, jinzhu) // UpdatedAt将会是当前时间DeletedAt
如果模型有DeletedAt字段调用Delete删除该记录时将会设置DeletedAt字段为当前时间而不是直接将记录从数据库中删除。 语法 相关语法可查询官方网站 https://gorm.io/zh_CN/docs/create.html jinzhu) // UpdatedAt将会是当前时间 #### DeletedAt如果模型有DeletedAt字段调用Delete删除该记录时将会设置DeletedAt字段为当前时间而不是直接将记录从数据库中删除。---## 语法- 相关语法可查询官方网站- https://gorm.io/zh_CN/docs/create.html