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

Go Gorm

Go Gorm

安装 mariadb 数据库

  • 安装数据库指令

    # 不同系统下# macbrew install mariadb -- 安装brew services start mariadb -- 启动# debainsudo apt install mariadb-server mariadb-client -y  -- 安装sudo systemctl start mariadb  -- 启动sudo systemctl enable mariadb  -- 开机自启# centos # ubuntu# 执行数据库初始化
    mysql_secure_installation
    
  • 执行创建超级用户指令

    CREATE USER 'server'@'%' IDENTIFIED BY '123456';
    GRANT ALL PRIVILEGES ON *.* TO 'server'@'%' WITH GRANT OPTION;
    FLUSH PRIVILEGES;
    

Gorm

快速入门
  • 文档:https://gorm.io/zh_CN

  • 新建go工程,安装Gorm

    go get -u gorm.io/gorm   
    go get -u gorm.io/driver/mysql
    
  • 编写main.go

    package mainimport ("fmt""gorm.io/driver/mysql""gorm.io/gorm"
    )type Product struct {gorm.ModelCode  stringPrice uint
    }func main() {// 1. 连接数据库db, err := gorm.Open(mysql.New(mysql.Config{DSN:                       "server:123456@tcp(127.0.0.1:3306)/test_gorm?charset=utf8mb4&parseTime=True&loc=Local", // DSN data source nameDefaultStringSize:         191,                                                                                    // string 类型字段的默认长度DisableDatetimePrecision:  true,                                                                                   // 禁用 datetime 精度,MySQL 5.6 之前的数据库不支持DontSupportRenameIndex:    true,                                                                                   // 重命名索引时采用删除并新建的方式,MySQL 5.7 之前的数据库和 MariaDB 不支持重命名索引DontSupportRenameColumn:   true,                                                                                   // 用 `change` 重命名列,MySQL 8 之前的数据库和 MariaDB 不支持重命名列SkipInitializeWithVersion: false,                                                                                  // 根据当前 MySQL 版本自动配置}), &gorm.Config{})if err != nil {panic("failed to connect database")}// 2. 数据迁移db.AutoMigrate(&Product{})// 3. 创建记录db.Create(&Product{Code: "D42", Price: 100})// 4. 查询记录var product Productdb.First(&product, 1)                 // 根据整型主键查找db.First(&product, "code = ?", "D42") // 查找 code 字段值为 D42 的记录fmt.Println("查询结果:", product, "ID:", product.ID, "Code:", product.Code, "Price:", product.Price)// 5. 更新记录// Update - 将 product 的 price 更新为 200db.Model(&product).Update("Price", 200)// Update - 更新多个字段db.Model(&product).Updates(Product{Price: 200, Code: "F42"}) // 仅更新非零值字段db.Model(&product).Updates(map[string]interface{}{"Price": 300, "Code": "F100"})// 6. 删除记录 Delete - 删除 productdb.Delete(&product, 1)
    }
    

Gin集成GORM

package modelimport ("RubGinWeb/config""RubGinWeb/model/user""gorm.io/driver/mysql""gorm.io/gorm"
)func Dsn() string {m := config.GlobalConfig.RubMysqlreturn m.Username + ":" + m.Password + "@tcp(" + m.Host + ":" + m.Port + ")/" + m.Dbname + "?" + m.Config
}func InitModel() {// 1. 连接数据库db, err := gorm.Open(mysql.New(mysql.Config{DSN:                       Dsn(), // DSN data source nameDefaultStringSize:         191,   // string 类型字段的默认长度DisableDatetimePrecision:  true,  // 禁用 datetime 精度,MySQL 5.6 之前的数据库不支持DontSupportRenameIndex:    true,  // 重命名索引时采用删除并新建的方式,MySQL 5.7 之前的数据库和 MariaDB 不支持重命名索引DontSupportRenameColumn:   true,  // 用 `change` 重命名列,MySQL 8 之前的数据库和 MariaDB 不支持重命名列SkipInitializeWithVersion: false, // 根据当前 MySQL 版本自动配置}), &gorm.Config{})if err != nil {panic("failed to connect database")}// 2. 数据迁移db.AutoMigrate(user.User{})}
http://www.jsqmd.com/news/482494/

相关文章:

  • 拒绝 500 与 404:Spring Boot 全局异常处理机制深度解析与常见 API 错误避坑指南
  • 大模型的“大脑”是如何构造的?深度拆解语义建模的三种典型架构
  • 从参数校验失败到序列化陷阱:构建健壮 Spring Boot RESTful API 的十大高频错误复盘
  • 玩转二叉树
  • Thinkphp和Laravel框架都支持 博物馆文物科普知识普及系统微信小程序-
  • Thinkphp和Laravel框架都支持微信小程序的展会展馆纪念馆门票在线预约管理系统19rtj
  • Thinkphp和Laravel框架都支持微信小程序的校园外卖系统 商家
  • Thinkphp和Laravel框架都支持心血管疾病风险预测小程序设计与实现-
  • Thinkphp和Laravel框架都支持微信小程序的校园社区报修上门维修系统
  • 网络安全、计算机网络、理论技术+企业级的产品实践经验相结合Part1 网络安全产品终端侦测与响应系统(EDR)网络侦测与响应系统(NDR)多引擎脆弱性(漏洞)扫描(VAS)网络安全威胁情报
  • 10个成功案例:AI应用架构师是如何用AI激活元宇宙商业生态的?
  • HashMap扩容机制
  • 更新-常用的Flask第三方扩展库清单合集教程和详细的代码示例
  • JavaDays08顺序结构And选择结构
  • 网络安全、渗透测试、安全开发、安全分析岗位面试笔记和参考答案,现已全部更新到服务器
  • HashMap详解
  • AI时代,.NET开发者的生存危机还是能力外挂?
  • 更新-DevOps运维人员必掌握的Linux命令清单教程合集
  • 在1panl安装 skill 比如安装腾讯gp咨询接口 Tushare skills,名称为tushare-data
  • 用mediainfo查看是否是后置mp4
  • 宁夏中宁枸杞品牌都有哪些?玺赞枸杞全维度解析 - 宁夏壹山网络
  • 【Vibe Coding解惑】从 Prompt 到 Code:生成流程解析
  • Godot游戏练习01-第11节-显示优化,游戏背景,Shader
  • 【数学笔记】反演变换
  • 2026春季W2(3.9~3.15)
  • 大语言模型的研究方向
  • 虚拟数字人品牌建设的“表情交互”架构:AI应用架构师的计算机视觉方案
  • 学习C语言第22天
  • 25级数应四班实验报告
  • HJ129 小红的双生数