Go语言学习之GORM| 青训营笔记

114 阅读2分钟

这是我参与「第三届青训营 -后端场」笔记创作活动的的第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变量来创建一个表,表的名字为传入的参数,由于这里没有设置参数,系统默认创造出来的为复数

image.png

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("插入失败")
  
   }

}

image.png

image.png

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

image.png

5.2使用结构体查询

```
var user TestUser
create_db.Model(&TestUser{}).First(&user)
fmt.Println("第一条记录:", user)

image.png

5.3带条件的查询

var user TestUser
create_db.Where("name = ?", "李四").First(&user)
//create_db.Where(TestUser{Name: "李四"}).First(&user)
fmt.Println(user)

image.png

6.修改记录

```
create_db.Model(&TestUser{}).Where("name = ?", "李四").Update("Name", "王五")

image.png

7.删除记录

 create_db.Model(&TestUser{}).Where("name = ?", "王五").Delete(&u)

image.png

小结一下:使用gorm操作数据库比直接使用系统提供的数据库操作方便些,使用gorm操作时,也可以使用sql语句来执行相应的操作,但是刚接触gorm,还是认为gorm提供的操作比较容易一些。