这是我参与「第三届青训营 -后端场」笔记创作活动的的第2篇笔记
怕什么真理无穷,进一步有进一步的欢喜
Go使用Gorm进行数据库连接
1.连接本地数据库
首先肯定是要找到本地的用户名& 密码,调用gorm.Open(...)进行本地数据库的连接
- 定义连接信息,用户名、密码、通信协议等信息
- 连接数据库,连接数据库时,可以加上一些高级配置,就是gorm.Config中的参数
- 密码:woshimima, 数据库:community
func main() {
url := "root:woshimima@tcp(127.0.0.1:3306)/community?charset=utf8mb4&parseTime=True&loc=Local"
db, err := gorm.Open(mysql.Open(url), &gorm.Config{})
if err != nil {
fmt.Println("连接失败")
return
} else {
fmt.Println("连接成功")
}
}
2.创建表
gorm创建表可以是根据结构体对象进行数据库表的创建,我们设定好结构体的字段就能够直接创建数据表了
type User struct {
Name string `json:"name"`
Id int
Password string
}
func main() {
///数据库的连接
//................
db.AutoMigrate(&User{}) //根据结构体字段进行创建表
}
3.插入数据
同样的,能够根据结构体字段进行表字段的创建,我们就可以通过对象进行数据的插入
db.Create(....)其中....就是我们创建的结构体对象,注意要和对应的表字段是匹配的才可以
type User struct {
....
}
func main() {
//....连接数据库
//上述我们已经创建了表字段了
user := User {"tom", 1 "woshimima"}
db.Create(user)
}
4.查询数据
查询满足条件的所有的结果
db.Where("Name = ?", "Xiao").Find(&users)上述例子就是查询
Name是Xiao的所有的结果 存放到users中查询不满足条件的所有的结果
db.Where("Name <> ?","xiao").Find(&user)上述就是查询出了名字是
Xiao的所有的用户模糊查询
db.Where("Name like ?","xiao").Find(&user)多条件查询
db.Where("Name = ? and Id = ?", "Xiao", 2).Find(&user)
总的来说呢,就是前面是sql语句,?对应后面我们需要查询的具体的键值
5.删除数据
db.Where("Name = ?", "Tom").Delete(User{})
//从数据库中删除Name 为 Tom的数据
6.项目样例
这里简单的介绍一下使用呀,其实我刚刚学会😢
青训营抖音的官方样例是使用的
map[stiring]User在内存中进行存储,只能单次使用。这里我简单演示一下:
- 在调用
Register的时候将User信息存储到MySQL数据库中- 在调用
Login的时候将User信息从MySQL中取出来- ⚠️:这里没有考虑数据库中已经存在传入的数据的情况,请自行添加
具体实现过程
- 首先使用
gorm创建数据库的表,或者是直接在本地创建,这里不演示了- 在controller包下面创建函数
InitDb()用于数据库的连接,注意将db设置为包下的全局变量以便包下面的其他的函数进行数据库的调用
- 修改
Register()将新创建的对象添加到数据库表中
- 进行
Login()函数的修改因为传入的是用户名 + 密码,我们新创建一个结构体
UserLoginInfo,包含User&Token