目录
0、定义表结构
type User struct {
Id int `gorm:"primary_key"`
Name string `gorm:"type:varchar(50);not null;index:ip_idx"`
Age int `gorm:"not null"`
Addr string `gorm:"type:varchar(50);not null;"`
}
1、连接
//连接数据库
db, err := gorm.Open("postgres", "host=127.0.0.1 port=5432 user=postgres dbname=db1 password=123456 sslmode=disable")
if err != nil {
log.Println(err)
} else {
log.Println("连接成功!")
}
defer db.Close()
2、建表
//创建表Users
if !db.HasTable(&User{}) {
if err := db.CreateTable(&User{}).Error; err != nil {
panic(err)
} else {
log.Println("创建成功!")
}
}
3、插入
//插入数据
user := &User{
Id: 1,
Name: "code",
Age: 20,
Addr: "大连",
}
if err := db.Create(user).Error; err != nil {
log.Println("插入失败!", err)
return
} else {
log.Println("插入成功!")
}
4、查询
//查询
var u User
db.Find(&u, "Id=?", 1)
log.Println(u)
5、修改
//修改
var uu User
db.First(&uu) //将第一行的数据信息传给user
user.Name = "knight"
db.Save(&uu)
log.Println(uu)
6、删除
//删除
var uuu = new(User)
db.Find(uuu, "Id=?", 2)
log.Printf("%#v\n", uuu)
//删除
db.Delete(uuu)
7、完整代码
package main
import (
"log"
"github.com/jinzhu/gorm"
_ "github.com/jinzhu/gorm/dialects/postgres"
_ "github.com/spaolacci/murmur3"
)
type User struct {
Id int `gorm:"primary_key"`
Name string `gorm:"type:varchar(50);not null;index:ip_idx"`
Age int `gorm:"not null"`
Addr string `gorm:"type:varchar(50);not null;"`
}
func main() {
//连接数据库
db, err := gorm.Open("postgres", "host=127.0.0.1 port=5432 user=postgres dbname=db1 password=123456 sslmode=disable")
if err != nil {
log.Println(err)
} else {
log.Println("连接成功!")
}
defer db.Close()
//创建表Users
if !db.HasTable(&User{}) {
if err := db.CreateTable(&User{}).Error; err != nil {
panic(err)
} else {
log.Println("创建成功!")
}
}
//插入数据
user := &User{
Id: 1,
Name: "code",
Age: 20,
Addr: "大连",
}
if err := db.Create(user).Error; err != nil {
log.Println("插入失败!", err)
return
} else {
log.Println("插入成功!")
}
//查询
var u User
db.Find(&u, "Id=?", 1)
log.Println(u)
//修改
var uu User
db.First(&uu) //将第一行的数据信息传给user
user.Name = "knight"
db.Save(&uu)
log.Println(uu)
//删除
var uuu = new(User)
db.Find(uuu, "Id=?", 2)
log.Printf("%#v\n", uuu)
//删除
db.Delete(uuu)
}