go_gorm的简单使用
LYT
首页
分类
标签
项目
留言
友链
关于

go_gorm的简单使用

2022年8月11日18时52分
2022年8月11日19时52分
golang
golang gorm
浏览量:
总浏览量:
0

简介

gorm是一个golang对数据库进行操作的开源框架,开始之前我们需要导入一下两个包,import一下gomod会自动下载这两个包,如果失效,那么手动导包,go get +包名

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

工具准备

我们现在项目根目录下新建一个modules文件夹,然后新建一个sql.go的文件,此后我们只需要调用这个包里面的DB就可以进行数据库的操作

package modules import ( "fmt" "gorm.io/driver/mysql" "gorm.io/gorm" ) var DB *gorm.DB var err error func init() { dsn := "root:liyatai@tcp(127.0.0.1:3306)/gin?charset=utf8mb4&parseTime=True&loc=Local" DB, err = gorm.Open(mysql.Open(dsn), &gorm.Config{}) if err != nil { fmt.Println(err) } }

此外还要再新建一个结构体,用于映射sql表中的列名

package modules type User struct { //默认的表名是user Name string Age int Level string } //用来指定绑定的表名 func (User) TableName() string { return "user" }

数据库中的表,注意结构体中的属性要大写,而且默认的表名就是结构体的名称,要指定名称可以用TableName()函数实现

image-20220811183620263

如果想在程序中更改表名,我们可以用table的方法指定表名

func GetAllWorld(s string) []model.Word { list := []model.Word{} model.DB.Table(s).Find(&list)//指定表名,查询所有数据,返回到结构体切片 return list }

具体sql操作

查询所有

查询所有信息注意接收返回值的变量是一个结构体切片

// 查询所有 func (con UserController) All(c *gin.Context) { userList := []modules.User{} modules.DB.Find(&userList) c.JSON(http.StatusOK, userList) }

条件查询

// 条件查询 func (con UserController) Less(c *gin.Context) { userList := []modules.User{} modules.DB.Where("age<20").Find(&userList) c.JSON(http.StatusOK, userList) }

添加数据

// 增加数据 func (con UserController) Add(c *gin.Context) { lyt := modules.User{Name: "王婵", Age: 22, Level: "筑基中期"} modules.DB.Create(&lyt) c.String(200, "添加成功") }

修改数据

func (con UserController) Update(c *gin.Context) { p1 := modules.User{} //修改多列数据, select选定特定列,不加select代表选定全部列 Omit()忽略特定的列 modules.DB.Model(&p1).Select("age", "level").Where("name=?", "林动").Updates(modules.User{Age: 24, Level: "半步造化"}) fmt.Println(p1) c.JSON(200, p1) }

删除数据

//删除数据 func (con UserController) Delete(c *gin.Context) { p1 := modules.User{} modules.DB.Where("name=?", "王婵").Delete(&p1) c.String(200, "删除成功") }

执行自定义sql语句

func GetOption() []string { list := []string{} model.DB.Raw("SELECT TABLE_NAME FROM information_schema.`TABLES` WHERE TABLE_SCHEMA = 'gin';").Scan(&list) return list }