这是我参与「第三届青训营 -后端场」笔记创作活动的的第3篇笔记,这篇主要是在复习go语言对数据库的操以及和gorm的使用
1.安装
go get -u gorm.io/gorm\
go get -u gorm.io/driver/(sqlite/mysql) 括号里面是需要操作的数据库
2.连接mysql
import (
"gorm.io/driver/mysql"
"gorm.io/gorm"
)
func main() {
// 参考 https://github.com/go-sql-driver/mysql#dsn-data-source-name 获取详情
dsn := "user:pass@tcp(127.0.0.1:3306)/dbname?charset=utf8mb4&parseTime=True&loc=Local"
db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{})
}
user 为连接数据库使用的用户,这里选择root
pass 为连接数据库的密码
dbname 为连接使用的数据库名字
3.创建表
这里定义了一个全局变量,
var create_db *gorm.DB //全局变量,其他的函数可以访问
create_db = db
type TestUser struct {
Name string
Age uint8
}
func TestUserCreate() {
create_db.AutoMigrate(&TestUser{})
}
这里使用了 create_db变量来创建一个表,表的名字为传入的参数,由于这里没有设置参数,系统默认创造出来的为复数
4.插入元素
```
func create() {
//多条插入
dbres := create_db.Create(&[]TestUser{
{Name: "张三", Age: 18},
{Name: "李四", Age: 20},
})
//单条插入
// dbres := create_db.Create(&TestUser{Name: "张三", Age: 18})
fmt.Println(dbres.RowsAffected) //显示出受影响的行数
if dbres.Error != nil {
fmt.Println("插入失败")
}
}
5.查询记录
5.1使用map查询
result := make(map[string]interface{})
create_db.Model(&TestUser{}).First(&result)
fmt.Println("第一条记录:", result)
create_db.Model(&TestUser{}).Last(&result)
fmt.Println("最后一条记录:", result)
需要注意两点,第一个就是初始化map,第二个就是需要使用模板Model
5.2使用结构体查询
```
var user TestUser
create_db.Model(&TestUser{}).First(&user)
fmt.Println("第一条记录:", user)
5.3带条件的查询
var user TestUser
create_db.Where("name = ?", "李四").First(&user)
//create_db.Where(TestUser{Name: "李四"}).First(&user)
fmt.Println(user)
6.修改记录
```
create_db.Model(&TestUser{}).Where("name = ?", "李四").Update("Name", "王五")
7.删除记录
create_db.Model(&TestUser{}).Where("name = ?", "王五").Delete(&u)
小结一下:使用gorm操作数据库比直接使用系统提供的数据库操作方便些,使用gorm操作时,也可以使用sql语句来执行相应的操作,但是刚接触gorm,还是认为gorm提供的操作比较容易一些。