前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >GO语言基础之gorm连接MySQL

GO语言基础之gorm连接MySQL

原创
作者头像
墨紫羽墨
修改2022-03-16 17:36:57
3.2K0
修改2022-03-16 17:36:57
举报
文章被收录于专栏:FutureTesterFutureTester

一、建立连接

GORM 官方支持的数据库类型有: MySQL, PostgreSQL, SQlite, SQL Server

代码语言:javascript
复制
package mysql

import (
	"fmt"
	"testing"

	"github.com/jinzhu/gorm"
	_ "github.com/jinzhu/gorm/dialects/mysql"
)

type config struct {
	user   string
	pass   string
	adrr   string
	port   string
	dbname string
}

func gormClient01() *gorm.DB {
conf := &config{
		user:   "root",                  // 用户名
		pass:   "",            			 // 密码
		adrr:   localhost, 				 // 地址
		port:   "3306",                  // 端口
		dbname: "user",                  // 数据库名称
	}
	dsn := fmt.Sprintf("%s:%s@tcp(%s:%v)/%s?charset=utf8&parseTime=True&loc=Local", conf.user, conf.pass, conf.adrr, conf.port, conf.dbname)
	db, err := gorm.Open("mysql", dsn)
	if err != nil {
		panic(err)
	}
	return db
}
type Userbase struct { // 需要修改的字段映射
	UserId    uint32    `gorm:"column:USER_ID;PRIMARY_KEY"`
	UserName  string    `gorm:"column:USER_NAME"`
	LoginDate time.Time `gorm:"column:LOGIN_DATE"`
	ClientVar *string `gorm:"column:CLIENT_VER"`
}

func (Userbase) TableName() string {
	return "userbase" // 数据库表的名称
}

func TestClient(t *testing.T) {
	db := gormClient01()
	ub := &Userbase{}
	err := db.Where("USER_ID = ?", 1187918).Find(&ub).Error
	if err != nil {
		panic(err)
	}
	fmt.Printf("userBase:%+v", ub)
}

因为我没有设置数据库密码,所以密码的地方就是空着的。

这是方式一,下面来写方式二

代码语言:javascript
复制
package mysql

import (
	"fmt"
	"testing"
	"time"

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

type Userbase struct { // 需要修改的字段映射
	UserId    uint32    `gorm:"column:USER_ID;PRIMARY_KEY"`
	UserName  string    `gorm:"column:USER_NAME"`
	LoginDate time.Time `gorm:"column:LOGIN_DATE"`
	ClientVar *string `gorm:"column:CLIENT_VER"`
}

func (Userbase) TableName() string {
	return "userbase" // 数据库表的名称
}

type config struct {
	user   string
	pass   string
	adrr   string
	port   string
	dbname string
}

func sqlDb() *gorm.DB {
	conf := &config{
		user:   "root",                  // 用户名
		pass:   "",            			 // 密码
		adrr:   localhost, 				 // 地址
		port:   "3306",                  // 端口
		dbname: "user",                  // 数据库名称
	}

	dsn := fmt.Sprintf("%s:%s@tcp(%s:%v)/%s?charset=utf8&parseTime=True&loc=Local", conf.user, conf.pass, conf.adrr, conf.port, conf.dbname)
	db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{
		Logger: logger.Default.LogMode(logger.Info), // 打印所有sql
	})
	if err != nil {
		panic(err)
	}
	return db
}

func TestClientDb(t *testing.T) {
	db := sqlDb()
	ub := &Userbase{}
	err := db.Where("USER_ID = ?", 1187918).Find(&ub).Error
	if err != nil {
		panic(err)
	}
	fmt.Printf("userBase:%+v", ub)
}

看着这两种方式写法是差不多的,只是导入的包不一样

参考文档:https://learnku.com/docs/gorm/v2/connecting_to_the_database/9731

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、建立连接
相关产品与服务
云数据库 MySQL
腾讯云数据库 MySQL(TencentDB for MySQL)为用户提供安全可靠,性能卓越、易于维护的企业级云数据库服务。其具备6大企业级特性,包括企业级定制内核、企业级高可用、企业级高可靠、企业级安全、企业级扩展以及企业级智能运维。通过使用腾讯云数据库 MySQL,可实现分钟级别的数据库部署、弹性扩展以及全自动化的运维管理,不仅经济实惠,而且稳定可靠,易于运维。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档