作用

自动生成表的 结构体 代码定义
自动生成表的 增删改查代码

model

文件生成在如下路径
image.png

model.go

中是 结构体定义 生成后的代码

  1. // Test1 测试表
  2. type Test1 struct {
  3. Id int32 ` gorm:"primaryKey" json:"id" ` //
  4. GoodsId int64 ` gorm:"column:goods_id;default:0" json:"goods_id" ` //商品ID
  5. Name string ` gorm:"column:name;default:" json:"name" ` //商品名称
  6. CreatedTime int32 ` gorm:"column:created_time;default:0" json:"created_time" ` //
  7. UpdatedTime int32 ` gorm:"column:updated_time;default:0" json:"updated_time" ` //
  8. }
  9. func (t Test1) TableName() string {
  10. return "test1"
  11. }
  12. func (t Test1) DbName() string {
  13. return "test"
  14. }
  15. //GetPrimaryKeyField 返回主键ID是哪个字段
  16. func (t Test1) GetPrimaryKeyField() string {
  17. return "Id"
  18. }
  19. //GetIsDelField 返回删除状态是哪个字段
  20. func (t Test1) GetIsDelField() string {
  21. return "deleted"
  22. }
  23. //GetDeleteTimeFiled 返回删除时间是哪个字段
  24. func (t Test1) GetDeleteTimeFiled() string {
  25. return "DeletedTime"
  26. }
  27. //BeforeCreate 创建记录时自动维护 CreatedTime UpdatedTime 两个字段, 这两个字段名 根据自己的表来设置
  28. func (t Test1) BeforeCreate(tx *gorm.DB) error {
  29. if len(tx.Statement.Selects) > 0 {
  30. tx.Statement.Selects = append(tx.Statement.Selects,"CreatedTime","UpdatedTime")
  31. }
  32. tx.Statement.SetColumn("CreatedTime", time.Now().Unix())
  33. tx.Statement.SetColumn("UpdatedTime", time.Now().Unix())
  34. return nil
  35. }
  36. //BeforeUpdate 更新记录时自动维护 UpdatedTime 字段 这个字段名 根据自己的表来设置
  37. func (t Test1) BeforeUpdate(tx *gorm.DB) error {
  38. tx.Statement.SetColumn("UpdatedTime", time.Now().Unix())
  39. return nil
  40. }

生成有结构定义,字段名,默认值,注释。创建,更新时间自动维护。

hanlder.go

中是 生成的 增删改查 代码

生成命令

./scripts/gen_model.sh 127.0.0.1:3306 root root test test1

root root test test1
参数依次表示 数据库账号,密码,数据库,表名

表名可以是 * 表示生成数据库中所有表的 结构体和增删改查代码