【go商城】gin+gorm实现CRUD

Go语言 ORM库GORM:实战与高级用法解析
本文介绍了GORM,一个用于Go语言的全特性ORM库,展示了如何通过GORM进行CRUD操作,以及如何利用其关联、事务、分页等特性,简化数据库操作。实例涵盖了创建、检索、更新和删除数据,以及在实际项目中的应用和分页查询技巧。

gorm是什么?

ORM-Object-Relationl Mapping,即对象关系映射,这里的Relationl指的是关系型数据库
它的作用是在关系型数据库和对象之间作一个映射,这样,我们在具体的操作数据库的时候,就不需要再去和复杂的SQL语句打交道,只要像平时操作对象一样操作它就可以了
GORM就是go语言实现的一个ORM库
特点:

  • 全特性 ORM (几乎包含所有特性)
  • 模型关联 (一对一, 一对多,一对多(反向), 多对多, 多态关联)
  • 钩子 (Before/After Create/Save/Update/Delete/Find)
  • 预加载
  • 事务
  • 复合主键
  • SQL 构造器
  • 自动迁移
  • 日志
  • 基于GORM回调编写可扩展插件
  • 全特性测试覆盖
  • 开发者友好

GORM之简单CRUD

增加(Create)

user := User{
   
   Name: "Jinzhu", Age: 18, Birthday: time.Now()}

db.NewRecord(user) // => 返回 `true` ,因为主键为空

db.Create(&user)

db.NewRecord(user) // => 在 `user` 之后创建返回 `false`

检索(Retrieve)

// 获取第一条记录,按主键排序
db.First(&user)
//// SELECT * FROM users ORDER BY id LIMIT 1;

// 获取一条记录,不指定排序
db.Take(&user)
//// SELECT * FROM users LIMIT 1;

// 获取最后一条记录,按主键排序
db.Last(&user)
//// SELECT * FROM users ORDER BY id DESC LIMIT 1;

// 获取所有的记录
db.Find(&users)
//// SELECT * FROM users;

// 通过主键进行查询 (仅适用于主键是数字类型)
db.First(&user,
### 构建 Vue3、GoGinGORM 的全栈项目 构建一个基于 Vue3 前端框架以及 Go 后端(使用 Gin Web 框架和 GORM ORM 库)的全栈应用程序涉及多个方面。下面提供一些指导性的建议来帮助理解如何着手这样的开发工作。 #### 选择合适的工具和技术栈 对于前端部分,Vue3 提供了一个现代化 JavaScript 开发环境,支持响应式的 UI 组件化编程方式;而后端则采用 Go 编程语言配合 Gin 来快速搭建 RESTful API 接口服务[^1]。为了简化数据库交互操作并提高效率,在服务器端还可以引入 GORM 这样的对象关系映射库来进行数据持久层管理[^2]。 #### 设置前后端分离架构 通常情况下会将客户端应用与API服务器分开部署,这样做的好处是可以独立扩展各自的服务,并且更易于维护和支持团队协作。因此,在实际项目中应该考虑创建两个不同的 Git 存储库分别用于保存前端源码和服务端逻辑实现文件。 #### 实现跨域资源共享 (CORS) 由于浏览器的安全策略,默认不允许来自不同域名下的请求访问资源。所以在配置 Gin 路由处理器时需特别注意设置 CORS 头部信息以便允许特定来源发起 AJAX 请求到后端接口上。 ```go func main() { r := gin.Default() // 配置 CORS 中间件 r.Use(cors.New(cors.Config{ AllowOrigins: []string{"http://localhost:8080"}, AllowMethods: []string{"GET", "POST", "PUT", "DELETE", "OPTIONS"}, AllowHeaders: []string{"Origin", "Content-Length", "Content-Type", "Authorization"}, ExposeHeaders: []string{"Content-Length"}, AllowCredentials: true, })) } ``` #### 数据模型设计与迁移脚本编写 利用 GORM 可以为每张表定义对应的结构体表示法,并通过链式调用来完成增删改查等基本 CRUD 功能。此外还能够方便地执行自动化的 Schema 更新任务以保持版本一致性。 ```go type User struct { ID uint `gorm:"primaryKey"` Name string Email string } // 创建或更新表结构 db.AutoMigrate(&User{}) ``` #### 整合 Vuex Store 状态管理模式 为了让组件之间共享状态变得简单明了,可以在 Vue3 项目里集成 Vuex 插件作为全局的状态容器。它不仅有助于集中管理和同步业务流程中的异步动作,而且可以更好地跟踪变化历史记录从而便于调试错误发生的原因所在。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值