orm 中文文档地址:

​go-orm中文文档​

step1,下载gorm库:

go get -v github.com/jinzhu/gorm

step2,编写测试代码:

package main

import (
"fmt"

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

//
type uid struct {
ID int64 `json:"id" xorm:"int pk autoincr 'id'"`
BusinessID string `json:"BusinesId" xorm:"varchar(128) 'business_id'"`
MaxID int `json:"MaxId" xorm:"bigint(20) 'max_id'"`
Step int `json:"Step" xorm:"int 'step'"`
Description string `json:"Description" xorm:"varchar(128) 'description'"`
}

// db parameter
const (
USERNAME = "root"
PASSWORD = "123456"
HOST = "192.168.1.28"
PORT = 3306
DBNAME = "test"
TIMEOUT = "10s"
)

func main() {
dsn := fmt.Sprintf("%s:%s@tcp(%s:%d)/%s?charset=utf8&parseTime=True&loc=Local&timeout=%s", USERNAME, PASSWORD, HOST, PORT, DBNAME, TIMEOUT)
db, err := gorm.Open("mysql", dsn)
if err != nil {
err = db.DB().Ping()
if err != nil {
fmt.Println("ping db failed!")
}
panic("连接数据库失败")
}
defer db.Close()

// 自动迁移模式
db.AutoMigrate(&uid{})

// 创建
db.Create(&uid{
BusinessID: "0123456789abcdefghijklmn",
MaxID: 40000,
Step: 1,
Description: "orm"},
)

// 读取
var uid []*uid
db.First(&uid, 1)
for _, v := range uid {
fmt.Println(v)
}
db.Find(&uid, "max_id = ?", 1100)
for _, v := range uid {
fmt.Println(v)
}

// 更新 - 更新uid的price为1100
db.Model(&uid).Update("max_id", 1100)

// 删除 - 删除product
//db.Delete(&uid)
}

step3,在vscode 终端进入main.go所在目录,执行编译命令

go mod init test
go get vendor
go build
./test.exe

step4,在linux mysql服务器查看执行结果:

mysql> select * from uids;
+----+--------------------------+--------+------+-------------+
| id | business_id | max_id | step | description |
+----+--------------------------+--------+------+-------------+
| 18 | 0123456789abcdefghijklmn | 1100 | 1 | orm |
| 19 | 0123456789abcdefghijklmn | 1100 | 1 | orm |
| 20 | 0123456789abcdefghijklmn | 1100 | 1 | orm |
+----+--------------------------+--------+------+-------------+
3 rows in set (0.01 sec)

mysql>

golang orm操作mysql数据库_json