11-gorm-V2-01-连接和建表

1. 连接数据库

package main

import (
	"database/sql"
	"fmt"
	"gorm.io/driver/mysql"
	"gorm.io/gorm"
	"time"
)

func main() {
	_,sqlDB,_ := connect()
	sqlDB.Close()
}

func connect() (db *gorm.DB,sqlDB *sql.DB,err error) {
	dsn := "root:40010355@tcp(127.0.0.1:3306)/crow?charset=utf8&parseTime=True&loc=Local"
	db, err = gorm.Open(mysql.Open(dsn), &gorm.Config{})
	sqlDB,_ = db.DB()
	if err != nil {
		fmt.Printf(err.Error())
		defer sqlDB.Close()
	}else {
		fmt.Printf("OK\n")
		sqlDB.SetMaxIdleConns(10)
		sqlDB.SetMaxOpenConns(100)
		sqlDB.SetConnMaxLifetime(time.Hour)
	}
	return
}

2 创建表

2.1 创建模型

  • 结构体名和表名相对应(关系见 2.3)
  • 结构体成员和列名对应,如:LiuBei —> liu_bei
type User struct {
	ID int64
	Age int64
	Name string
}

2.2 创建表

可将 “1. 连接数据库” 的示例代码中main函数替换如下

func main() {
	db,sqlDB,_ := connect()
	defer sqlDB.Close()
	
	db.Migrator().CreateTable(&User{})

}
  • 生成表结构如下
mysql> desc users;
+-------+------------+------+-----+---------+----------------+
| Field | Type       | Null | Key | Default | Extra          |
+-------+------------+------+-----+---------+----------------+
| id    | bigint(20) | NO   | PRI | NULL    | auto_increment |
| age   | bigint(20) | YES  |     | NULL    |                |
| name  | longtext   | YES  |     | NULL    |                |
+-------+------------+------+-----+---------+----------------+
3 rows in set (0.00 sec)

2.3 模型和表名的对应关系

结构体库名
LiuBeiliu_beis
Guan_Yuguan_yu
ZhangFei01zhang_fei01
说明:以驼峰定义结构体,库名会变成小写中间以”_”分割,结尾加“s”。如果以数字结尾则不会加"s"。

2.4 自定义表名

添加如下代码

func(User) TableName() string {
	return "ha_ha"
}

之后生成库名为"ha_ha"

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

玄德公笔记

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值