go get github.com/jinzhu/gorm
官方文档:http://gorm.book.jasperxu.com/
DDL操作
对数据库,表,字段等的操作,这里指的DDl不包括数据库
一、数据库
连接数据库
/ 引入gorm及驱动包
"github.com/jinzhu/gorm"
_ "github.com/jinzhu/gorm/dialects/mysql"
db,db_err := gorm.Open("mysql","root:Qazwsx123@[tcp](localhost:3306)/test_gorm?charset=utf8&parseTime=True&loc=Local")
if err!= nil{
panic(err)
}
defer db.Close() // 关闭连接
// loc=Local:表示根据本地时区走
// parseTime:处理time.Time
创建表
package main
import (
"github.com/jinzhu/gorm"
_ "github.com/jinzhu/gorm/dialects/mysql"
)
// 创建表
type User struct {
Id int
Name string
Age int
Addr string
Pic string
}
func main(){
// 用户名:密码@/数据库
db,err := gorm.Open("mysql","root:123456@/gorm_project?charset=utf8&parseTime=True&loc=Local")
if err != nil {
panic(err)
}
defer db.Close() // 关闭空闲连接
// 创建表
db.CreateTable(&User{})
}
type User struct {
Id int
Name string
Age int
}
// 创建表
db.Table("user").CreateTable(&User{}) // 指定表名
db.CreateTable(&User{}) // 不指定表名,模型后面会加个s
数据库迁移
1.自动迁移
自动迁移仅仅会创建表,添加缺少列和索引,并且不会改变现有列的类型或删除未使用的列以保护数据
db.AutoMigrate(&User{})
db.AutoMigrate(&User{}, &Product{}, &Order{})
// 创建表时添加表后缀
db.Set("gorm:table_options", "ENGINE=InnoDB").AutoMigrate(&User{})