gorm学习笔记01

gorm仓库

https://github.com/go-gorm/gorm

官网

https://gorm.io/

创建项目

go mod初始化 go mod init gostudy2023
go mod tidy

登录mysql

登录mysql
mysql -u root -p1234
use test01;
select * from userinfo;

显示表
show tables;

gorm连接数据库

代码如下:

package main

import (
	"log"
	"os"
	"time"

	"gorm.io/driver/mysql"
	"gorm.io/gorm"
	"gorm.io/gorm/logger"
)

type Product struct {
	gorm.Model
	Code  string
	Price uint
}

func main() {
	newLogger := logger.New(
		log.New(os.Stdout, "\r\n", log.LstdFlags), // io writer
		logger.Config{
			SlowThreshold:             time.Second, // Slow SQL threshold
			LogLevel:                  logger.Info, // Log level
			IgnoreRecordNotFoundError: true,        // Ignore ErrRecordNotFound error for logger
			ParameterizedQueries:      true,        // Don't include params in the SQL log
			Colorful:                  true,        // Disable color
		},
	)

	// refer https://github.com/go-sql-driver/mysql#dsn-data-source-name for details

	// "用户名:密码@tcp(ip:端口)/数据库?charset=utf8mb4&parseTime=True&loc=Local"
	dsn := "root:1234@tcp(127.0.0.1:3306)/test01?charset=utf8mb4&parseTime=True&loc=Local"
	db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{
		Logger: newLogger,
	})

	if err != nil {
		panic(err)
	}

	// Migrate the schema
	db.AutoMigrate(&Product{})

	// Create
	db.Create(&Product{Code: "D42", Price: 100})
}

代码解释
(1) 配置全局logger
(2) 打开数据库
(3) 定义结构体(参考gorm.io文档的预览tab页内容),使用AutoMigrate将go结构体同步到数据库表结构,注意在定义结构体时,默认需要添加一个参数gorm.Model.

go gorm 的AutoMigrate什么作用

gorm是一个Go语言的ORM(对象关系映射)库,用于方便地与关系型数据库交互。AutoMigrategorm提供的一个功能,用于自动迁移你的数据模型,基本上它将同步你的数据模型结构到实际的数据库表结构。

以下是AutoMigrate的一些关键点:

  1. 创建表: 如果数据库中不存在该表,它会创建表。

  2. 不删除或更改现有列: 如果你的数据模型结构更改了(例如,删除或更改字段),AutoMigrate不会删除或更改数据库中的现有列或表。

  3. 新列自动添加: 如果你的数据模型中增加了新的字段,AutoMigrate会在数据库中的相应表上添加新的列。

  4. 索引、外键和其他约束: 除了基本的列之外,AutoMigrate还会创建在模型上定义的索引和外键。

下面是一个基本示例:

type User struct {
    ID uint
    Name string
    Email string
}

db.AutoMigrate(&User{})

在上述示例中,gorm会检查User结构体,并确保数据库中存在相应的表和列。

但是,请注意以下几点:

  • AutoMigrate不会删除不再使用的列。
  • 虽然AutoMigrate在开发过程中非常有用,但在生产环境中使用时需要谨慎,因为它可能导致数据丢失或不一致。

总之,AutoMigrate是一个用于快速同步数据模型与数据库表结构的工具,但在部署到生产环境之前,建议仔细检查和测试迁移。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值