一.安装
go get -u github.com/jinzhu/gorm
二.连接数据库
import (
"github.com/jinzhu/gorm"
_ "github.com/jinzhu/gorm/dialects/mysql"
)
扩展:import后的下划线的作用即:当导入一个包时,该包下的文件里所有init()函数都会被执行,
然而,有些时候我们并不需要把整个包都导入进来,仅仅是是希望它执行init()函数而已。这个时候
就可以使用 import _ " "引用该包。即使用【import _ 包路径】只是引用该包,仅仅是为了调用
init()函数,所以无法通过包名来调用包中的其他函数。
func main() {
方法1:
db, err := gorm.Open("mysql", "user:password@(localhost)/dbname?charset=utf8mb4&parseTime=True&loc=Local")
方法2:
connArgs := fmt.Sprintf("%s:%s@%s(%s:%d)/%s?charset=utf8mb4&parseTime=True&loc=Local", "root","123456", "tcp","127.0.0.1", 3306, "dbname" )
db, err := gorm.Open("mysql", connArgs)
if err != nil{
panic(err)
}
注意1:panic: dial tcp [::1]:3306: connectex: No connection could be made because the target machine actively refused it. 数据库没打开 被拒绝
注意2:在创建连接之前一定要新建好数据库,在本例中dbname即为我创建的数据库名称,若不创建则会报如下错误 panic: Error 1049: Unknown database 'dbname'
创建数据库的方法:在navicate中右击新建数据库即可!!!
defer db.Close()
//自动检查Product结构是否变化,变化则进行迁移
db.AutoMigrate(&UserInfo{})
//创建数据行
u1 := UserInfo{3,"紫色飞猪","男","直播"}
db.Create(&u1)
}
简单的增删改查
package main
import (
"fmt"
"github.com/jinzhu/gorm"
_"github.com/jinzhu/gorm/dialects/mysql"
)
type UserInfo struct {
ID int
Name string
Gender string
Hobby string
}
func main() {
connArgs := fmt.Sprintf("%s:%s@%s(%s:%d)/%s?charset=utf8mb4&parseTime=True&loc=Local", "root","WYQwyq021819.", "tcp","127.0.0.1", 3306, "gin_gorm" )
db,err := gorm.Open("mysql",connArgs)
if err != nil{
panic(err)
}
defer db.Close()
//自动检查Product结构是否变化,变化则进行迁移
db.AutoMigrate(&UserInfo{})
//创建数据行
u1 := UserInfo{3,"紫色飞猪","男","直播"}
db.Create(&u1)
//查询
var u UserInfo
db.First(&u) //查询一行
fmt.Printf("u:%#v\n",u)
var u1 UserInfo
db.Last(&u1) //查询最后一行
fmt.Printf("u1:%#v\n",u1)
//更新
db.Model(&u).Update("hobby","双色球")
//删除
db.Delete(&u).Delete("")
}