GORM使用篇 | 青训营

136 阅读1分钟

一、安装好mysql和相关的GORM包

不多赘述

二、Goland配置Mysql数据库

  • 右侧栏 -> Database -> +添加img
  • 选择MySQL

    img

  • 修改Name -> Comment(可选)

    img

  • 选择Mysql版本
  • 填写数据库连接信息,填写数据库名:test, 选择数据库test
  • 建立表users,添加三个字段

image.png

三、开始编写操作数据库的代码

3.1连接数据库

使用open语句

注意一下dsn 的各个参数的含义即可,需要自己进行替换:

root为用户名

123456为我设置的mysql的登录密码

test为我们要操作的数据库

image.png

3.2添加数据

使用create语句

image.png

3.3 查询数据

单个查询:定义一个变量,查询相关字段的值:相当于sql语句的简写

批量查询:直接查询表里面的所有数据

image.png

3.4对数据进行修改

直接对之前的变量进行复制即可

image.png

3.5 删除数据

使用delete语句,直接删除相关变量即可

image.png

整体代码如下:

 package main
 ​
 import (
     "fmt"
     "gorm.io/driver/mysql"
     "gorm.io/gorm"
 )
 ​
 type User struct {
     ID   int
     Name string
     Age  int
 }
 ​
 func main() {
     dsn := "root:123456@tcp(127.0.0.1:3306)/test?charset=utf8mb4&parseTime=True&loc=Local"
     db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{}) //打开数据库连接
     if err != nil {
         panic(err)
     }
     println("success")
     DB, _ := db.DB()
     defer DB.Close() //在函数执行完成后关闭数据库句柄
     //新增
     rsOne := db.Create(&User{ID: 1, Name: "aaa", Age: 32})
     if rsOne.RowsAffected > 0 {
         fmt.Println("用户1创建成功")
     }
     rsTwo := db.Create(&User{ID: 2, Name: "bbb", Age: 33})
     if rsTwo.RowsAffected > 0 {
         fmt.Println("用户2创建成功")
     }
     //查询
     var u1 User
     db.Find(&u1, "id = ?", 1)
     fmt.Println(u1)
     //批量查询
     var users []User
     db.Find(&users)
     fmt.Println(users)
     //修改
     u1.Name = "ccc"
     u1.ID = 3
     u1.Age = 34
     rsSave := db.Save(u1)
     if rsSave.RowsAffected > 0 {
         fmt.Println("用户修改成功")
     }
     //修改后查询数据是否已经变化
     db.Find(&u1, "id = ?", 4)
     fmt.Println(u1)
     //删除
     rsDelete := db.Delete(u1)
     if rsDelete.RowsAffected > 0 {
         fmt.Println("用户删除成功")
     }
     //再次批量查询
     var usersT []User
     db.Find(&usersT)
     fmt.Println(usersT)
 }
 ​

运行结果如下:

image.png

数据库的数据如下:

image.png