golang orm操作mysql数据库

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>

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

唐墨123

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

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

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

打赏作者

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

抵扣说明:

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

余额充值