MySql数据库交互
19【Gin+GORM】Gin GORM的配置及实现数据库表的增删改查 | 18 使用文档:https://gorm.io/zh_CN/docs/index.html
定义全局变量访问数据库
在modules下新建一个访问数据库的模块,定义数据库初始化信息
package modules
import (
"fmt"
"gorm.io/driver/mysql"
"gorm.io/gorm"
)
var DB *gorm.DB
var err error
func init() {
dsn := "root:qwaszx123@tcp(127.0.0.1:3306)/study?charset=utf8mb4"
DB, err = gorm.Open(mysql.Open(dsn), &gorm.Config{})
if err != nil {
fmt.Println("数据库连接失败:")
fmt.Println(err)
}
}
定于数据结构体
结构体名称、结构体属性均需要大写才能访问 结构体名称直接对应表名,但是默认是复数形式:结构体User ⇒ 表users 结构体属性需要与数据库字段驼峰命名对照:结构体属性CreateAt ⇒ 表create_at
type User struct {
Id int
Username string
Password string
Email string
CreatedAt int
UpdateAt int
DeleteAt int
}
- 自定义表名 定义结构体User的方法TableName可以自定义结构体对应的表名
func (User) TableName() string {
return "User"
}查询数据
先定义存放数据的切片,通过DB调用Find方法传入可修改的内存地址
func (con UserController) Index(context *gin.Context) {
userList := []modules.User{}
modules.DB.Find(&userList)
context.JSON(200, gin.H{
"result": userList,
})
context.String(http.StatusOK, "用户index")
}条件查询
使用DB.Where()方法
modules.DB.Where("username='王五'").Find(&userList)
// 查询单个
user:=modules.User{Id:6}
modules.DB.Find(&user)新增数据
使用DB.Create(&x)
user := modules.User{
Username: "老六",
Password: "123456",
}
modules.DB.Create(&user)更新数据
使用DB.Save(&x)
// 查询单个
user := modules.User{Id:6}
modules.DB.Find(&user)
user.name = "新张三"
modules.DB.Save(&user)更新指定列
使用DB.Model.Where.Update
user := modules.User{}
modules.DB.Model(&user).Where("id = ?",6).Update("username", "新张三")删除数据
使用DB.Delete()
user := modules.User{Id: 6}
modules.DB.Delete(&user)