Gorm学习

创建mysql数据库连接

db, err := gorm.Open("mysql", "root:a123@tcp(127.0.0.1:3306)/go_db?charset=utf8mb4&parseTime=True&loc=Local")
if err != nil {
	panic(err)
}
defer db.Close()

定义模型

可以自行定义,也可以使用gorm的model进行模型嵌套

//结构体嵌套
type UserInfo struct {
	gorm.Model
	Name   string `gorm:"default:'小壳儿'"`
	Gender string
	Hobby  string
}

//自定义
type UserInfo struct {
	ID     uint
	Name   string `gorm:"default:'小王子'"`
	Gender string
	Hobby  string
}

创建表table

db, err := gorm.Open("mysql", "root:a123@tcp(127.0.0.1:3306)/go_db?charset=utf8mb4&parseTime=True&loc=Local")
if err != nil {
	panic(err)
}
defer db.Close()
db.AutoMigrate(UserInfo{})//表明默认为user_infos

//注意若有多个单词自动用下划线连接,`UserInfo` 的表名是 `user_infos`
// 禁用默认表名的复数形式,如果置为 true,则 `UserInfo` 的默认表名是 `user_infos`
db.SingularTable(true)

//也可以自行指定表名创建
db.Table("user_info").CreateTable(&UserInfo{})

添加记录和删除记录和更新

//模型:
type UserInfo struct {
	ID     uint
	Name   string `gorm:"default:'小王子'"`
	Gender string
	Hobby  string
}

新增记录:
u1 := UserInfo{Name: "小壳儿", Gender: "男", Hobby: "羽毛球"}
db.Create(&u1)
u2 := UserInfo{2, "陈瑜", "女", "排球"}
db.Create(&u2)

//更新信息:
db.Model(&u).Update("Hobby", "羽毛球")

//删除记录:
db.Delete(&u1)

查询记录

Find

String条件

var u []UserInfo

//Select 方法指定只查询 User 记录的 name 属性,而忽略其他属性
result := db.Select("name").Find(&u)

//Get all matched records
//Limit 方法限制了查询返回的最大记录数
//<>是不等于 ?是占位符 这里是查询名字不是小壳儿的前两条记录
result := db.Limit(2).Where("name <> ?", "小壳儿").Find(&u)

//IN
//Where 方法用于指定查询条件,用于指定查询条件,也称为 where 子句
//这里是查询名字是陈瑜或者小壳儿的所有记录
result := db.Where("name IN (?)", []string{"陈瑜", "小壳儿"}).Find(&u)

//这里是查询名字是小壳儿的记录
result := db.Where("name = ?", "小壳儿").Find(&u)

// LIKE
//这里是查找名字里有陈的所有记录
db.Where("name LIKE ?", "%陈%").Find(&u)

// AND
//这里是查询名字是小壳儿且id大于等于2的所有记录
db.Where("name = ? AND id >= ?", "小壳儿", "2").Find(&u)

//BETWEEN AND
//这里是查询id在1和3之间的所有记录,1<=id<=3
db.Where("ID BETWEEN ? AND ?", "1", "3").Find(&u)

if result.Error != nil {
    // 处理错误
}
fmt.Printf("%#v\n", u)

STRUCT OR MAP条件

var u []UserInfo



if result.Error != nil {
    // 处理错误
}
fmt.Printf("%#v\n", u)

猜你喜欢

转载自blog.csdn.net/helianthus_254/article/details/130201872
今日推荐