1. 创建数据
- 判断主键是否存在
如果存在返回flase,如果不存在返回true
| package main |
| |
| import ( |
| "fmt" |
| "github.com/jinzhu/gorm" |
| _ "github.com/jinzhu/gorm/dialects/mysql" |
| ) |
| type xiShu struct { |
| ID int64 |
| Name string |
| Age int64 |
| } |
| |
| func(xiShu) TableName() string { |
| return "xi_shu" |
| } |
| |
| func main() { |
| |
| db,_ := connect() |
| defer db.Close() |
| db.CreateTable(&xiShu{}) |
| |
| liuBei := xiShu { |
| |
| Name: "LiuBei", |
| Age: 28, |
| |
| } |
| |
| if db.NewRecord(liuBei) { |
| db.Create(&liuBei) |
| } |
| |
| } |
| |
| func connect() (db *gorm.DB,err error) { |
| db, err = gorm.Open("mysql", "root:40010355@tcp(127.0.0.1:3306)/crow?charset=utf8&parseTime=True&loc=Local") |
| if err != nil { |
| fmt.Printf(err.Error()) |
| defer db.Close() |
| }else { |
| fmt.Printf("OK") |
| db.DB().SetMaxIdleConns(10) |
| db.DB().SetMaxOpenConns(100) |
| |
| } |
| return |
| } |
2. 在钩子中修改字段值
上边main函数中定义了 LiuBei的名字,如果我们创建数据的时候需要修改,则定义BeforeCreate()如下:
| func (LiuBei *xiShu) BeforeCreate(scope *gorm.Scope) error { |
| scope.SetColumn("Name", "GuanYu") |
| return nil |
| } |

【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)