GORM初试 | 青训营笔记

54 阅读2分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第3天

Gorm介绍

什么是ORM

Object Relational Mapping:对象关系映射

数据库中的表数据和结构体之间具有对应关系 如下图

image.png

连接MySQL

	//配置MySQL连接参数
	username := "root"   //账号
	password := "123456" //密码
	host := "127.0.0.1"  //数据库地址,可以是Ip或者域名
	port := 3306         //数据库端口
	Dbname := "db6"      //数据库名
	timeout := "10s"     //连接超时,10秒

	//拼接下dsn参数, dsn格式可以参考上面的语法,这里使用Sprintf动态拼接dsn参数,因为一般数据库连接参数,我们都是保存在配置文件里面,需要从配置文件加载参数,然后拼接dsn。
	dsn := fmt.Sprintf("%s:%s@tcp(%s:%d)/%s?charset=utf8&parseTime=True&loc=Local&timeout=%s", username, password, host, port, Dbname, timeout)
	//连接MYSQL, 获得DB类型实例,用于后面的数据库读写操作。
	db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{})
	if err != nil {
		panic("连接数据库失败, error=" + err.Error())
	}

简单使用

在使用GORM前手动创建数据库db1

package main import ( "fmt" "github.com/jinzhu/gorm" _ "github.com/jinzhu/gorm/dialects/mysql" ) // UserInfo 用户信息 
type UserInfo struct { ID uint Name string Gender string Hobby string } 
func main() { db, err := gorm.Open("mysql", "root:root1234@(127.0.0.1:13306)/db1?charset=utf8mb4&parseTime=True&loc=Local") 
if err!= nil{ 
    panic(err) } 
    defer db.Close() // 自动迁移 
    db.AutoMigrate(&UserInfo{}) u1 := UserInfo{1, "七米", "男", "篮球"
    } 
u2 := UserInfo{2, "沙河娜扎", "女", "足球"} // 创建记录 
db.Create(&u1) db.Create(&u2) // 查询 var u = new(UserInfo) db.First(u) fmt.Printf("%#v\n", u) 
var uu UserInfo db.Find(&uu, "hobby=?", "足球") 
fmt.Printf("%#v\n", uu) // 更新 
db.Model(&u).Update("hobby", "双色球") // 删除 db.Delete(&u) 
}

GORM Model定义

在使用ORM工具时,通常我们需要在代码中定义模型(Models)与数据库中的数据表进行映射,在GORM中模型(Models)通常是正常定义的结构体、基本的go类型或它们的指针。 同时也支持sql.Scannerdriver.Valuer接口(interfaces)。

参考链接

www.cnblogs.com/SR-Program/… t.zoukankan.com/kylin520131…