需要在终端下载
go get -u github.com/jinzhu/gorm
和
go get gorm.io/driver/mysql
下例为form的增删查改
package main
import (
"fmt"
_ "github.com/go-sql-driver/mysql"
"github.com/jinzhu/gorm"
)
type UserInfo struct {
ID uint
Name string
Hobby string
Gender string
}
func main() {
db, err := gorm.Open("mysql", "root:123456@(127.0.0.1:3306)/test?charset=utf8mb4&parseTime=True&loc=Local")
if err!=nil {
fmt.Println("数据库连接失败"+err.Error())
}
//退出程序后关闭数据库连接
defer db.Close()
//自动迁移
db.AutoMigrate(&UserInfo{})
u1:=UserInfo{ID:1, Name: "张三", Gender:"男", Hobby: "篮球",}
u2:=UserInfo{ID:2, Name: "李四", Gender:"女", Hobby: "排球",}
u3:=UserInfo{ID:3, Name: "王五", Gender:"男", Hobby: "足球",}
db.Create(&u1)
db.Create(&u2)
db.Create(&u3)
//查询
var x = new(UserInfo)
db.Last(x)
var F = new(UserInfo)
db.First(F)
fmt.Println(x,F)
//另一种查询的方法
var Y UserInfo
db.Find(&Y,"Hobby=?","足球")
fmt.Println(Y)
//更改
db.Model(&u1).Update("Hobby","电脑")
fmt.Printf("%#v\n",u1)
//删除
db.Delete(&u1)
}
全功能 ORM
关联 (Has One,Has Many,Belongs To,Many To Many,多态,单表继承)
Create,Save,Update,Delete,Find 中钩子方法
支持 Preload、Joins 的预加载
事务,嵌套事务,Save Point,Rollback To Saved Point
Context、预编译模式、DryRun 模式
批量插入,FindInBatches,Find/Create with Map,使用 SQL 表达式、Context Valuer 进行 CRUD
SQL 构建器,Upsert,数据库锁,Optimizer/Index/Comment Hint,命名参数,子查询
复合主键,索引,约束
Auto Migration
自定义 Logger
灵活的可扩展插件 API:Database Resolver(多数据库,读写分离)、Prometheus…
每个特性都经过了测试的重重考验
开发者友好
版权声明:本文为JR11111原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。