GORM实践 | 青训营笔记

99 阅读1分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 4 天。

这里学习使用GORM连接mysql数据库进行简单的增删改查操作。

首先,下载mysql数据库,创建一个表,并手动创建几个数据用于测试。

若要使用mysql数据库,需要先安装包:

go get -u gorm.io/gorm
go get -u gorm.io/driver/mysql 

连接数据库需要用到DSN:

image.png 这里写一下DSN的格式:

username:password@tcp(host:port)/Dbname?charset=utf8&parseTime=True&loc=Local

其中,username 数据库账号 password 数据库密码 host 数据库连接地址,可以是Ip或者域名 port 数据库端口 Dbname 数据库名 charset=utf8 客户端字符集为utf8 parseTime=true 支持把数据库datetime和date类型转换为golang的time.Time类型 loc=Local 使用系统本地时区.

连接完成数据库后,可进行增删改查操作,具体api使用方法可查阅官方文档

https://gorm.io/docs/index.html

全部代码如下,这里使用的是我之前的一个数据库,里面本身包含一些数据,如果是刚创建的数据库,可以先增加一些数据方便测试。

package main

import (
   "fmt"
   "gorm.io/driver/mysql"
   "gorm.io/gorm"
   "time"
)

type Pointcloud struct {
   Id             int `gorm:"primaryKey;AUTO_INCREMENT"`
   Filename       string
   Filepath       string
   Classification string
   Date           time.Time
   Location       string
}

func (p Pointcloud) TableName() string {
   return "process_fileinfo"
}

func main() {
   db, err := gorm.Open(
      mysql.Open("root:XXXXXXX@tcp(127.0.0.1:3306)/web_pointcloud?charset=utf8&parseTime=True&loc=Local"),
      &gorm.Config{})
   if err != nil {
      panic("数据库连接失败")
   }
   var pointcloud Pointcloud
   //查
   db.First(&pointcloud)
   fmt.Println(pointcloud)

   var pointclouds []Pointcloud
   db.Where("id > ? AND id < ?", "10", "30").Find(&pointclouds)
   fmt.Println(pointclouds)

   //增
   pointcloud = Pointcloud{Filename: "测试创建", Filepath: "测试创建路径", Classification: "测试", Date: time.Now(), Location: "测试地址"}
   db.Create(&pointcloud)
   //改
   db.Model(&pointcloud).Update("filename", "测试创建后改")
   //删
   db.Delete(&Pointcloud{}, 10)

}

数据库情况:

image.png

运行结果:

image.png

总结:对于不熟悉的框架,要善于阅读官方文档,一般官方文档中都会有较为详细的描述。