GORM
官方支持的数据库类型有: MySQL
, PostgreSQL
, SQlite
, SQL Server
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)
}
因为我没有设置数据库密码,所以密码的地方就是空着的。
这是方式一,下面来写方式二
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 删除。