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

GO语言基础之gorm连接MySQL

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

一、建立连接

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 条评论
热度
最新
推荐阅读
目录
  • 一、建立连接
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档