Go Gorm能成吗?

摘要:Go Gorm 安装 mariadb 数据库 安装数据库指令 # 不同系统下 # mac brew install mariadb -- 安装 brew services start mariadb -- 启动 # debain sudo
Go Gorm 安装 mariadb 数据库 安装数据库指令 # 不同系统下 # mac brew install mariadb -- 安装 brew services start mariadb -- 启动 # debain sudo 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 main import ( "fmt" "gorm.io/driver/mysql" "gorm.io/gorm" ) type Product struct { gorm.Model Code string Price 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 name DefaultStringSize: 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 Product db.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 更新为 200 db.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 - 删除 product db.Delete(&product, 1) } Gin集成GORM package model import ( "RubGinWeb/config" "RubGinWeb/model/user" "gorm.io/driver/mysql" "gorm.io/gorm" ) func Dsn() string { m := config.GlobalConfig.RubMysql return 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 name DefaultStringSize: 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{}) }