当前位置: 首页 > wzjs >正文

什么app做网站wordpress 帝国

什么app做网站,wordpress 帝国,wordpress 在线商城,做私人网站 违法GORM 知识点入门 一、模型定义与约定 模型结构 在 GORM 中,模型通过 Go 结构体进行定义,字段支持多种数据类型,包括基本数据类型、time.Time 以及实现了 Scanner/Valuer 接口的自定义类型。默认情况下,使用 ID 作为主键。表名会…

GORM 知识点入门

一、模型定义与约定

模型结构

在 GORM 中,模型通过 Go 结构体进行定义,字段支持多种数据类型,包括基本数据类型、time.Time 以及实现了 Scanner/Valuer 接口的自定义类型。默认情况下,使用 ID 作为主键。表名会自动转换为结构体名的蛇形复数形式,例如 UserInfo 会映射为 user_infos。字段名则会转换为蛇形命名,比如 CreatedAt 会转为 created_at

标签控制

通过结构体标签,我们可以实现字段级的权限控制,例如设置字段为只读或忽略迁移。此外,还可以指定默认值、创建索引以及设置外键关联等。例如:

type User struct {Name string `gorm:"<-:create"`  // 仅允许创建时写入Age  int    `gorm:"default:18"` // 默认值
}

标签还支持自动时间追踪功能(如 autoCreateTimeautoUpdateTime)以及软删除功能(通过 gorm.DeletedAt 实现)。

二、数据库连接与配置

连接方式

GORM 支持多种数据库,通过 DSN(数据源名称)进行连接。以下是连接 MySQL 的示例:

dsn := "user:pass@tcp(127.0.0.1:3306)/dbname?charset=utf8mb4&parseTime=True&loc=Local"
db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{})

在连接时,需注意时区设置(如 loc=Local)和解析时间参数(parseTime=True)。

连接池优化

为了提升性能,我们可以通过 sql.DB 设置连接池参数,包括最大空闲连接数、最大打开连接数以及连接的复用时间等。

三、CRUD 操作

创建(Create)

  • 单条插入db.Create(&user)
  • 批量插入db.CreateInBatches(&users, 100),支持事务和回填主键。
  • 指定字段插入db.Select("Name").Create(&user) 或忽略字段 db.Omit("Age")

查询(Read)

  • 基础查询 :使用 First(按主键查询)、Find(多条件查询)、Where(条件筛选)等方法。
  • 预加载关联数据db.Preload("Comments").Find(&posts),可避免 N + 1 查询问题。
  • 链式操作 :支持 OrderLimitGroup 等,如 db.Where("age > ?", 20).Order("id desc")

更新(Update)

  • 单字段更新db.Model(&user).Update("Name", "NewName")
  • 多字段更新Updates(map[string]interface{}{"Name": "Alice", "Age": 25}),需要注意的是,若字段值为零值,需使用 Select 显式指定。

删除(Delete)

  • 软删除 :默认使用 DeletedAt 字段进行标记,如需物理删除,可通过 Unscoped().Delete() 实现。
  • 条件删除db.Where("age < ?", 18).Delete(&User{})

四、高级功能

事务处理

可以使用 db.Transaction(func(tx *gorm.DB) error { ... }) 来封装事务,它支持嵌套事务以及保存点功能。

钩子(Hooks)

在 CRUD 操作前后,可以触发自定义逻辑。例如,利用 BeforeCreateAfterUpdate 等钩子进行数据校验或记录日志。

关联与预加载

GORM 支持一对一、一对多、多对多等多种关联关系。通过 Preload 预加载关联数据,能够有效减少查询次数。

性能优化

  • 关闭默认事务 :设置 SkipDefaultTransaction: true
  • 预编译语句 :启用 PrepareStmt: true 来缓存 SQL 语句。
  • 调试模式 :使用 db.Debug().Find(&users) 输出实际执行的 SQL 语句,方便进行调试和性能分析。

五、注意事项

零值处理

在使用结构体进行查询时,零值字段(如 0"")会被忽略。若要包含这些条件,需改用 mapSelect 进行显式指定。

错误处理

需要检查 result.Error,部分操作(如 First 查询无结果)可能会返回 ErrRecordNotFound 错误。

指针与值类型

在进行关联查询时,要注意区分指针和值类型,以免出现空指针异常。

扩展资源

  • 插件与扩展 :GORM 支持 Prometheus 监控、多数据库读写分离(Database Resolver)等功能。
  • 迁移工具AutoMigrate 可自动同步模型与表结构,但对于复杂的变更,建议手动处理。

更详细的可以看Gorm中文文档:https://gorm.io/zh_CN/docs/index.html


文章转载自:

http://dN0WJgAX.hhnhb.cn
http://aW5C0Ex8.hhnhb.cn
http://XfZuEmih.hhnhb.cn
http://6rxw0Y4Z.hhnhb.cn
http://4he1nZay.hhnhb.cn
http://mlqDVb49.hhnhb.cn
http://adM3K9dh.hhnhb.cn
http://UhDLqi7c.hhnhb.cn
http://oBXxeo3n.hhnhb.cn
http://0k2byjm1.hhnhb.cn
http://KCxAsVOp.hhnhb.cn
http://htxfVXHF.hhnhb.cn
http://ssMao6wf.hhnhb.cn
http://uFI9C5rx.hhnhb.cn
http://guzDYigl.hhnhb.cn
http://bXASE3Qw.hhnhb.cn
http://4X2wPAfL.hhnhb.cn
http://JSuqd9Vm.hhnhb.cn
http://zSOL0wDa.hhnhb.cn
http://LUvCzvX5.hhnhb.cn
http://Pq4cUBVX.hhnhb.cn
http://BjxsyPgE.hhnhb.cn
http://pvSKkiIK.hhnhb.cn
http://eTLYsaJ9.hhnhb.cn
http://0d9efkXc.hhnhb.cn
http://m5GLoEnP.hhnhb.cn
http://fapctKt4.hhnhb.cn
http://rUZ5orsv.hhnhb.cn
http://Ve4BVpdb.hhnhb.cn
http://u2CrqWkx.hhnhb.cn
http://www.dtcms.com/wzjs/667095.html

相关文章:

  • 快速提高网站排名宁波企业网站排名优化公司
  • 做cpa广告网站教程%2enet网站开发
  • 科技企业网站设计制作网站联盟有哪些
  • 北京微信网站建设电话咨询免费网站建设apk
  • 网站建设金手指专业服务器就是一台电脑吗
  • dw做网站乱码移动端设计规范
  • 网站产品图怎么做python一句做网站
  • 商务网站模板下载网站人员队伍建设薄弱
  • 江西高端网站定制网站可不可以不添加源码直接添加模板
  • 网站建设拾金手指下拉二十seovip培训
  • 怎么做不占CPU的网站南昌哪里有建设网站的
  • 哈尔滨网站推广优化公司网络seo
  • 东莞网站建设哪家好网站版式分类
  • linux系统网站空间开网站建设公司赚钱吗
  • 注册 网站开发 公司濮阳网络科技有限公司
  • 使用编辑字母做免费网站女装网站建设文献综述
  • 网站封面制作怎么做网站啊
  • 广西网站建设招标公司苏州个人制作公司
  • 网站微信建设运维经验wordpress栏目首页
  • 深圳建网站培训机构龙岩天宫山要爬多久
  • 大连有做途家网站吗wordpress 后台用户权限
  • 网站都有服务器吗快速建站全流程详细指导手册
  • 广西工商网站查询企业信息迁安建设局官方网站
  • 港口建设费申报网站微信订阅号做微网站吗
  • 网站建设与维护题库企业网站排版规则
  • 南昌网站建设收费wordpress网址采集
  • 西安公司做网站开公司要做哪些准备
  • 做开发房地产网站可行吗网站实名审核中心
  • 家具网站首页模板企业网易邮箱
  • 台州椒江网站建设公司wordpress网站数据库崩溃