package test
import (
"database/sql"
"errors"
"fmt"
"time"
"wang/gorm_learn/config"
"gorm.io/gorm"
)
type Model struct {
UUIID uint `gorm:"primaryKey"`
Time time.Time `gorm:"column:my_time"` //指定 db 列名
}
type User struct {
Model Model `gorm:"embedded;embeddedPrefix:in_"`
Name string `gorm:"default:张三"`
Email string `gorm:"not null"`
Age uint8
Birthday *time.Time
MemberNumber sql.NullString
ActivatedAt sql.NullTime
}
type res struct { //返回结果结构体
Name string
Age uint8
}
func TestCreate() {
db := config.Init()
err := db.AutoMigrate(&User{})
if err != nil {
print(err)
return
}
}
func AddUserTest() {
//create := config.Init().Create(&User{Name: "测试", Email: "45654", Age: 24})
//create := config.Init().Select("name","email").Create(&User{Name: "测试", Email: "45654", Age: 24})//只创建name和email
create := config.Init().Omit("age").Create(&[]User{
{Name: "测试", Email: "45654", Age: 24}}) //除了age之外全部创建
//print(create.Error)//是否报错
if create.Error != nil {
print(create.Error)
}
print(create.RowsAffected) //影响行数
if create.RowsAffected != 0 {
fmt.Printf("数据插入成功")
}
}
func FindUserTest() {
//result:=map[string] interface{}{}
user := new([]User)
//res:=new([]res)
var res []res
//config.Init().M
//odel(&User{}).First(&result)//方式1
//tx := config.Init().Where("name","测试1").Model(&User{}).First(&user) //方式2
//tx := config.Init().Where(User{Name: "测试1"}).Model(&User{}).First(&user) //方式3
//tx := config.Init().Where(map[string]interface{}{
// "name":"测试1",
//}).Model(&User{}).First(&user) //方式4
//tx := config.Init().Where("name =? and age =?","测试1",24).Or("email =?","1").First(&user) //方式5
//tx := config.Init().First(&user,"name =?","测试1") //方式6
//tx := config.Init().First(&user, map[string]interface{}{"name":"测试1"}) //方式6
//tx := config.Init().Find(&user, map[string]interface{}{"age":"24"}) //方式6
//tx := config.Init().Where("age =?",24).Find(&user) //方式7
//tx := config.Init().Where("age like ?","%2%").Find(&user) //方式7
//tx := config.Init().Select("name").Where("age like ?","%2%").Find(&user) //方式8
//tx := config.Init().Omit("name").Where("age like ?","%2%").Find(&user) //方式8
tx := config.Init().Model(&user).Omit("name").Where("age like ?", "%2%").Find(&res) //方式9,智能选择字段
fmt.Println(errors.Is(tx.Error, gorm.ErrRecordNotFound)) //判断是否查询到记录,
// 判断first是否查询成功
fmt.Println(res)
//config.Init().Model(&User{}).Take(&user)
//fmt.Println(user)
//config.Init().Model(&User{}).Last(&user)
//fmt.Println(user)
}
func UpdateUserTest() {
//update只更新你选择的字段
// updates 更新所有字段此时有两种形式一种为Map一 种 为结构体结构体零值不参与更新
//save无论如何都更新 所有的内容包括值
var user []User
// config.Init().Model(user).Where("age like ?", "%2%").Update("name", "111")
// config.Init().First(&user).Updates(map[string]interface{}{"name": " ", "age": 0})
config.Init().Find(&user).Updates(map[string]interface{}{"name": " ", "age": 0}) //批量更新
}
func DeleteUserTest() {
var user []User
// var res []res
config.Init().Model(&user).Unscoped().Where("age = 20").Find(&user).Delete(&user) //删除
}
还没有评论,来说两句吧...