gin gorm 数据模型
连接数据库
import (
_ "github.com/go-sql-driver/mysql"
"github.com/jinzhu/gorm"
)
func ConnectSql() {
dsn := "gosql:mypwd@tcp(127.0.0.1:3306)/gosql?charset=utf8mb4&parseTime=True&loc=Local"
db, err := gorm.Open("mysql", dsn)
if err!= nil{
fmt.Println(err)
panic(err)
}
defer db.Close()
}
创建表
type User struct {
gorm.Model
Name string `json:"name"`
Age int `json:"age"`
Email string `json:"email"`
Password string `json:"password"`
}
db.AutoMigrate(&model.User{})
插入数据
db.Create(&model.User{
Name: "gosql",
Age: 18,
Email: "1",
Password: "1",
})
查询数据
var user model.User
db.Where("name = ?", "gosql").First(&user)
fmt.Println(user)
var user []model.User
db.Find(&user,"age",30)
db.Where("age",30).Find(&user)
查询关联表的数据
db.Preload("Teachers").Preload("IDCard").First(&student, id)
分页查询
type Page struct {
PageNum int `form:"page_num"`
PageSize int `form:"page_size"`
Keyword string `form:"keyword"`
Desc bool `form:"desc"`
}
r.GET("/student", func(ctx *gin.Context) {
var p Page
if ctx.ShouldBindQuery(&p) != nil {
ctx.JSON(http.StatusUnauthorized, gin.H{
"err_msg": "参数错误",
})
return
}
if p.PageNum 0 {
p.PageNum = 1
}
var students []Student
if err := db.Limit(p.PageSize).Offset((p.PageNum-1)*p.PageSize).Find(&students).Error; err != nil {
ctx.JSON(http.StatusUnauthorized, gin.H{
"err_msg": err.Error(),
})
}
var total int
db.Model(&Student{}).Count(&total)
pageNum := total / p.PageSize
if total % p.PageSize != 0{
pageNum++
}
ctx.JSON(http.StatusOK, gin.H{
"code":200,
"msg":"查询成功",
"data": students,
"total": total,
})
})
指定返回的数据
type StudentResponse struct {
StudentName string
}
r.GET("/student", func(ctx *gin.Context) {
data := &[]*StudentResponse{}
db.Table("students").Find(&data)
ctx.JSON(http.StatusOK, data)
})
修改数据
// 修改
db.Where("id= ?",1).First(&model.User{}).Update("name","彩色动力")
db.Where("id= ?",1).First(&model.User{}).Updates(&model.User{
Name:"彩色动力1",
Age:28,
Email:"csev.@qq.com",
Password:"1234567",
})
// 批量修改
db.Where("id in (?)",[]int{1,2}).Find(&[]model.User{}).Updates(map[string]interface{}{
"Name":"彩色动力2",
})
删除数据
//软删除只会在delete_at里增加删除时间
db.Where("id= ?",1).Delete(&model.User{})
db.Where("id in (?)",[]int{1,2}).Delete(&[]model.User{})
// 硬删除
db.Where("id= ?",1).Unscoped().Delete(&model.User{})
版权声明:
作者:89391311
链接:https://www.csev.cn/code-2/golang/20241203534.html
来源:彩色动力-测试分享
版权声明:本文欢迎任何形式转载,转载时完整保留本声明信息(包含原文链接、原文出处、原文作者、版权声明)即可。本文后续所有修改都会第一时间在原始地址更新。
作者:89391311
链接:https://www.csev.cn/code-2/golang/20241203534.html
来源:彩色动力-测试分享
版权声明:本文欢迎任何形式转载,转载时完整保留本声明信息(包含原文链接、原文出处、原文作者、版权声明)即可。本文后续所有修改都会第一时间在原始地址更新。
THE END
二维码
打赏
文章目录
关闭
共有 0 条评论