####gorm试用--属于
###数据库连接
db, err := gorm.Open("mysql", "root:rootpassword@/dbname?charset=utf8&parseTime=True&loc=Local")
if err != nil {
panic("连接数据库失败")
}
defer db.Close()
###创建表
if !db.HasTable(&User{}) {
db.CreateTable(&User{})
}
if !db.HasTable(&Profile{}) {
db.CreateTable(&Profile{})
}
###准备些数据
oneuser := User{Name: "wayne"}
db.Create(&oneuser)
oneprofile := Profile{UserID: 1, Name: "wayne1"}
db.Create(&oneprofile)
###查询数据
user := &User{}
db.Debug().Where(&User{Name: "wayne"}).First(&user)
profile := &Profile{}
db.Debug().Model(&user).Related(&profile)
fmt.Println(user)
fmt.Println(profile)
###整体代码
package main
import (
"fmt"
"github.com/jinzhu/gorm"
_ "github.com/jinzhu/gorm/dialects/mysql"
)
func main() {
db, err := gorm.Open("mysql", "root:rootpassword@/dbname?charset=utf8&parseTime=True&loc=Local")
if err != nil {
panic("连接数据库失败")
}
defer db.Close()
if !db.HasTable(&User{}) {
db.CreateTable(&User{})
}
if !db.HasTable(&Profile{}) {
db.CreateTable(&Profile{})
}
oneuser := User{Name: "wayne"}
db.Create(&oneuser)
oneprofile := Profile{UserID: 1, Name: "wayne1"}
db.Create(&oneprofile)
user := &User{}
// 查询用户,条件为名字为wayne,将结果放到user变量里
db.Debug().Where(&User{Name: "wayne"}).First(&user)
profile := &Profile{}
// 依据之前查询的user为条件,查询profile,查询profile的条件为user的id
db.Debug().Model(&user).Related(&profile)
fmt.Println(user)
fmt.Println(profile)
}
type User struct {
gorm.Model
Name string
}
type Profile struct {
gorm.Model
UserID int
User User
Name string
}