从0 开始使用gorm 链接并简单操作mysql数据库,自己踩过的一些坑
(我的环境:win10, vscode, Navicat, mysql8)
我们做的大项目,相当一部分内容就是对数据库的增删改查
gorm 是go 的 ORM框架,我将其理解为 Java 中的 MyBatis。虽然它们的目标都是在数据库和面向对象编程之间建立映射,但由于语言和设计差异,它们在实现和使用方面有一些区别:
-
语言:
- gorm:用于 Go 编程语言。
- MyBatis:用于 Java 编程语言。
-
领域:
- gorm 主要面向 Go 社区的用户,与 Go 的编程范式和特性紧密结合。
- MyBatis 主要面向 Java 社区,利用 Java 的特性和生态系统。
-
查询构建:
- gorm 提供了链式的查询构建器,让您通过方法链轻松地构建复杂查询。
- MyBatis 使用 XML 或注解来编写 SQL 查询语句,它更像是将 SQL 直接嵌入到代码中。
-
数据库迁移:
- gorm 提供了数据库迁移工具,使得创建和管理数据库表结构变得更加便捷。
- MyBatis 没有内置的数据库迁移工具,数据库结构通常需要通过其他方式进行管理。
-
关联关系:
- gorm 支持多种关联关系,通过 struct 字段标签进行关联。
- MyBatis 也支持关联关系,但需要通过配置和查询语句来实现。
-
事务支持:
- gorm 和 MyBatis 都支持事务处理,允许您在多个数据库操作中维护数据的一致性。
-
软删除:
- gorm 支持软删除,允许在记录中标记删除而不实际删除。
- MyBatis 没有内置的软删除机制,需要手动处理。
-
定制性:
- gorm 提供了一些强大的功能,同时也提供了更多的自定义选项,适应不同的开发需求。
- MyBatis 也提供了很多自定义选项,但可能需要更多的配置。
-
生态系统:
- MyBatis 在 Java 社区中拥有庞大的生态系统和用户基础。
- gorm 在 Go 社区中也有较大的用户基础,但可能相对较小。
那么如何从0开始,把 gorm 运行起来,真正做到能够对数据库进行简单操作,是我这样的小白首先要做的事。
首先我们打开 navicat,新建一个数据库,就叫 douyin 吧
如果大家忘了自己的密码,可以参考这篇文章 blog.csdn.net/icemeco/art… 、
随后打开vscode,新建一个go 文件,在vscode 中,打开终端,分别输入
go get -u gorm.io/gorm
go get -u gorm.io/driver/sqlite
网络原因,可能会出错,用手机流量开个热点,多试几次就好了
随后复制这段代码
package main
import (
"gorm.io/driver/mysql"
"gorm.io/gorm"
)
type Product struct {
Code string
Price uint
}
//这段代码,将表的名字设定为 product,如果不加,gorm 会默认表名字为priducts
func (p Product) TableName() string {
return "product"
}
func main() {
//username,password,dbname.这三个要替换成你自己的用户名,密码,数据库名字(比如刚刚新建的douyin)
dsn := "username:password@tcp(127.0.0.1:3306)/dbname?charset=utf8mb4&parseTime=True&loc=Local"
db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{})
if err != nil {
panic("Failed to connect to database")
}
//下面是增删改查操作,
db.Create(&Product{Code: "D25", Price: 200})
var product Product
// db.First(&product, 1)
// db.Model(&product).First()
// db.Model(&product).Update(map[string]interface{}{"price": 200, "Code": })
//db.Delete(&product, 2)
}
这时候运行直接运行会报错,会娴熟数据库内并没有一个叫prodect 的表,那我们就去建一个 product 表,有两个字段:Code, Price。和我们的结构体定义的保持一致,
再次运行代码, 终端提示,成功插入一行数据!
[445.498ms] [rows:1] INSERT INTO `product` (`code`,`price`) VALUES ('D25',200)
再去 navicat 看一下,以及成功添加进一条数据了。到此一个最简单的gorm操作就完成了。至于其他操作,代码已经有了,只需依次尝试即可。