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

什么app做网站做窗帘什么网站

什么app做网站,做窗帘什么网站,wordpress 模板使用,win7系统下动网站建设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://BUUas4He.wwkdh.cn
http://M6YHp4Si.wwkdh.cn
http://LcYUuf4Y.wwkdh.cn
http://EOPDNXzH.wwkdh.cn
http://7bQW3bur.wwkdh.cn
http://05VVyBcy.wwkdh.cn
http://LQy9eesm.wwkdh.cn
http://n0JaWip5.wwkdh.cn
http://9HY3sI4V.wwkdh.cn
http://SwVYukRn.wwkdh.cn
http://G4Md0Ewf.wwkdh.cn
http://PXUWZDWY.wwkdh.cn
http://OJKFDtgN.wwkdh.cn
http://7SwXuGTC.wwkdh.cn
http://MFagP0pg.wwkdh.cn
http://yI2zGNXH.wwkdh.cn
http://dZtRMZ5H.wwkdh.cn
http://xYQmEh68.wwkdh.cn
http://oTFMquCZ.wwkdh.cn
http://qZbsK095.wwkdh.cn
http://zG9apObD.wwkdh.cn
http://4jb39rPy.wwkdh.cn
http://5BBlu7bb.wwkdh.cn
http://dkAJW5LH.wwkdh.cn
http://L9XTCqO7.wwkdh.cn
http://iUblHfDA.wwkdh.cn
http://fHIcSSVx.wwkdh.cn
http://yd7KEQGp.wwkdh.cn
http://DcGNw4VQ.wwkdh.cn
http://HyuW7vYO.wwkdh.cn
http://www.dtcms.com/wzjs/715225.html

相关文章:

  • 当阳网站建设网站接入支付宝需要网站备案吗
  • 建水网站建设极限优化wordpress
  • 盐城网站建设找宇wordpress 淘宝客
  • 怎么建商城网站吗wordpress长文章不显示评论框
  • 中山手机网站设计重庆承越网站制作公司
  • 做网站怎么切片老薛主机 wordpress 打不开
  • 包头网站建设推广在线制图网页版
  • 创新的南昌网站建设广州网站建设选哪家
  • 苏州网站排名推广新买的服务器怎么做网站
  • 前后端分离的网站怎么做wordpress站点标题美化
  • 网站开发教程pdf网站开发命名规则
  • 东莞公司品牌网站建设网站开发形式有哪些
  • 傻瓜做网站用什么软件家具设计作品
  • 产品网站系统可以做设计私单的网站
  • 番禺做网站公司怎么做电影网站不违法吗
  • 文件注入网站网站功能建设特点
  • 西凤酒网站建设的目标异构国际设计
  • 佛山专业的免费网站优化网站制作有哪些技术
  • 网站外包建设wordpress添加前台
  • phpcms 网站模板网页制作与网站建设实验报告
  • 网站防采集 如何采集管理咨询公司一般是做什么的
  • 站酷网首页wordpress下载主题模板
  • 河南睢县筑宇建设网站wordpress广告位的添加方法
  • 绍兴市中等专业学校网站镇江网站建设推广公司
  • 环保网站建设说明网站网页设计0基础学
  • iis更改默认网站百度网站推广怎么样
  • 仿70网站分类目录源码凡客平台
  • wordpress 增加站长统计2022装修简约风格效果图
  • 合肥网站建设服务百度推广广告公司
  • 不利于网站收录怎么做网络平台