1.简单的连接和CURD
package main
import (
"github.com/jinzhu/gorm"
_ "github.com/go-sql-driver/mysql"
"time"
)
type User struct {
User_id int `gorm:"primary_key"` //指定主键并自增
Name string
Pwd string
CreatedAt time.Time
UpdatedAt time.Time
}
func main() {
//创建连接
db, err := gorm.Open("mysql", "root:root@tcp(127.0.0.1:3306)/gorm?charset=utf8&parseTime=True&loc=Local")
if err != nil {
panic("连接数据库失败")
}
defer db.Close()
// 自动迁移模式
//db.AutoMigrate(&User{})
user := User{}
//添加
db.Create(&User{Name: "qwwqw", Pwd: "qwqwqwqwqw"})
//查询
db.First(&user, 1).Scan(&user)
//修改
user.Name = "jinzhu 2"
db.Save(&user)
//删除
db.Where("user_id = ?",2).Delete(User{})
}
2.深入查询操作
package main
import (
"github.com/jinzhu/gorm"
_ "github.com/go-sql-driver/mysql"
"time"
"fmt"
)
type User struct {
User_id int `gorm:"primary_key"` //指定主键并自增
Name string
Pwd string
CreatedAt time.Time
UpdatedAt time.Time
Car []Car `gorm:"ForeignKey:User_id;AssociationForeignKey:User_id"` //(一对多)指定外键和关联外键
}
type Car struct {
Car_id int32 `gorm:"primary_key"`
User_id int
Car_name string
Car_gongli string
}
func main() {
//创建连接
db, err := gorm.Open("mysql", "root:root@tcp(127.0.0.1:3306)/gorm?charset=utf8&parseTime=True&loc=Local")
if err != nil {
panic("连接数据库失败")
}
defer db.Close()
// 自动迁移模式
db.AutoMigrate(&User{}, &Car{})
/**
* 查询单条数据
* &是为了获取结构体的内存地址,这样指针传递速度较快
*/
user := User{}
db.First(&user, 10)
SELECT * FROM users WHERE user_id = 10 LIMIT 1;
db.Where("user_id = ?", 9).First(&user)
SELECT * FROM users WHERE user_id = 9 LIMIT 1;;
fmt.Println(&user)
/**
* 查询多条数据
*
*/
users := []User{}
db.Find(&users)
SELECT * FROM users
db.Where("user_id = ? and name = ?", 10, "jinzhu").Find(&users)
SELECT * FROM users WHERE name = "jinzhu" AND user_id = 20;
db.Where("created_at > ?", "2018-09-22 08:50:09").Or("updated_at < ?", "2018-09-22 08:50:09").Order("created_at asc").Find(&users)
SELECT * FROM users WHERE created_at = '2018-09-22 08:50:09' OR updated_at < '2018-09-22 08:50:09';
fmt.Println(users)
/**
* 关联查询
* 一对多 多对一 多对多
*/
db.Where("user_id = ?", 10).Preload("Car").Find(&user)
db.Where("user_id = ?", 10).Preload("Car","car_name like ?","%田%").Find(&user)
fmt.Println(&user)
}