写在前面
通过青训营的学习,了解到了GORM库,GORM是go的ORM库,可以通过该库对数据库进行增删改查等操作,本文是对GORM的初体验的记录。
一、GORM的安装
首先需要安装gorm库,在命令行窗口中输入 go get -u gorm.io/gorm 安装GORM库。
由于本机安装的数据库为mysql,因此还需要安装gorm对应的mysql驱动,通过在命令行窗口中输入 go get -u gorm.io/driver/mysql来安装驱动
二、在数据库中创建数据表
创建经典的user数据表,数据表包括id属性,int类型,作为主键,name属性varchar类型,age属性,int类型,email属性,varchar类型。
三、创建Model
定义了User结构并实现了TableName接口以便能够方便地进行增删改查操作,采用驼峰命名,会自动匹配数据库中对应的列名,重写了TableName方法,保证User对应数据库中的user表,如果不重写,那么默认对应users表。
type User struct {
ID int
Name string
Age int
Email string
}
func (User) TableName() string {
return "user"
}
四、连接数据库
接下来就是连接mysql数据库,需要使用gorm.Open函数进行数据库的连接,通过dsn参数传入数据库连接的相关信息,该参数为字符串,包含数据库用户、密码、端口、编码等信息,还需要传入gorm.Config的指针。
dsn := user + ":" + pass + "@tcp(127.0.0.1:3306)/gormtest?charset=utf8mb4&parseTime=True&loc=Local"
db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{})
五、添加用户
首先进行单个用户的添加,使用Create函数进行数据的插入,其中需要传入一个User的指针。该函数会返回一个result对象,可以通过该对象查看执行的状态。
new_user := User{1, "GGBond", 20, "abc@qq.com"}
result := db.Create(&new_user)
还可以一次性添加多个用户,比如可以向Create函数中传入一个User数组的指针,实现一次添加多个用户,Create函数会根据传入数组中的元素属性进行添加。
var user_array = []User{{2, "WangXiao", 21, "bbc@qq.com"},
{3, "WangYiao", 21, "bbc@qq.com"},
{4, "WangMiao", 24, "bbc@qq.com"}}
res := db.Create(&user_array)
添加后结果如下
六、删除用户
可以进行按条件删除,通过调用db的Where设置删除条件,然后调用Delete执行删除操作。以删除id为1的用户为例。
var recv_user User
db.Where("id = ?", 1).Delete(&recv_user)
七、修改用户
可以通过调用Model选择用户,然后调用Where设置修改条件,最后调用Update指明需要修改的属性和值,以将id为2的用户年龄修改为11为例
upd_user := User{2, "WangXiao", 15, "bbb@qq.com"}
db.Model(&upd_user).Where("id = ?", 2).Update("age", 11)
修改结果如下
八、查询用户
可以通过Where函数设置查询条件,然后调用First进行查询 以查找年龄为21的用户为例
var usrr User
db.Where("age = ?", 21).First(&usrr)
九、总结
通过使用GORM进行增删改查的过程,体会到了GORM框架的便捷性,通过该框架可以很大程度上免除一些比较繁杂的SQL语句,可以很快提高效率,同时GORM提供了十分详尽的文档,在实践过程中,GORM的文档给了很大的帮助,我在这个过程中也学会了如何阅读文档,收获很多。