package main
//gorm demo1 //连接不同的数据库要使用不同的驱动
import (
"fmt"
"github.com/jinzhu/gorm"
_ "github.com/jinzhu/gorm/dialects/mysql"
)
type UserInfo struct {
ID int
Name string
Gender string
Hobby string
}
func main() {
db, err := gorm.Open("mysql", "root:20030303@tcp(localhost:3306)/b1?charset=utf8mb4&parseTime=True&loc=Local")
if err != nil {
panic(err)
}
defer db.Close()
//创建表 自动迁移(把结构体和数据表进行对应)
db.AutoMigrate(&UserInfo{})
//创建记录
//u1 := UserInfo{1, "假紫颜", "女", "飞机"}
//db.Create(&u1)
//查询
var u UserInfo
db.First(&u) //查询表中第一条数据保存到u中
fmt.Printf("u:%#v\n", u)
//更新
db.Model(&u).Update("hobby", "受宠")
db.First(&u)
fmt.Printf("u:%#v\n", u)
//删除
db.Delete(&u)
db.First(&u)
fmt.Printf("u:%#v\n", u)
}
package main
import (
"database/sql"
"github.com/jinzhu/gorm"
_ "github.com/jinzhu/gorm/dialects/mysql"
"time"
)
type User struct {
gorm.Model
Name string
Age sql.NullInt64 `gorm:"column:user age"` //零值类型
Birthday *time.Time
Email string `gorm:"type:varchar(120);unique_index"`
Role string `gorm:"size:255"` //字段大小255
MemberNumber *string `gorm:"unique;not null"` //设置会员号唯一且不为空
Num int `gorm:"AUTO_INCREMENT"` //设置为自增类型
Address string `gorm:"index:addr"` //给字段创建索引
IgnoreMe int `gorm:"-"`
}
type N struct {
Name string
}
func (User) TableName() string {
return "User_funcname"
} //使用User{}映射创建的表的名字会使用这个函数的返回值的string
func main() {
gorm.DefaultTableNameHandler = func(db *gorm.DB, defaultTableName string) string {
return "SMS_" + defaultTableName
} //修改默认的表名的前缀
db, err := gorm.Open("mysql", "root:20030303@(localhost:3306)/b1?charset=utf8mb4&parseTime=true&loc=Local")
if err != nil {
panic(err)
}
defer db.Close()
db.SingularTable(true) //禁用复数 就是创建的时候的表的名字后面会跟s 这是禁用这个选项
db.AutoMigrate(&User{})
db.AutoMigrate(&N{})
//使用User结构体创建名字为moxu的表
//db.Table("moxu").CreateTable(&User{})
}
Gorm 模型定义
定义模型
type User struct {
ID int64
Name string
Age int64
}
package main
import (
"fmt"
"github.com/jinzhu/gorm"
_ "github.com/jinzhu/gorm/dialects/mysql"
)
// 1.定义模型
type User struct {
ID int64
Name string
Age int64
}
func main() {
//连接mysql数据库
// db, err := gorm.Open("mysql", "root:20030303@(localhost:3306)/b1?charset=utf8mb4&parseTime=True&loc=Local")
db, err := gorm.Open("mysql", "root:20030303@(localhost:3306)/b1?charset=utf8mb4&parseTime=true&loc=Local")
if err != nil {
panic(err)
}
defer db.Close()
//2.把模型与数据库中的表对应起来 把模型的变化映射到数据库中的数据表
db.AutoMigrate(&User{})
//3.创建
u := User{ //在代码层面创建的一个User对象
ID: 0,
Name: "moxu",
Age: 18,
}
fmt.Println(db.NewRecord(&u)) //判断主键是否为空 主键为空代表还没有在数据库中去存入 为空返回true 不为空返回false
db.Create(&u) //在数据库中创建了一条moxu 18的记录
fmt.Println(db.NewRecord(&u))
}
Gorm创建记录及字段默认值相关
利用tag进行默认值的设置
字段 type `gorm:"default 'moxu'"`