go-grom实现增删改查

àì夳堔傛蜴生んèń 2024-04-03 13:07 125阅读 0赞
  1. package test
  2. import (
  3. "database/sql"
  4. "errors"
  5. "fmt"
  6. "time"
  7. "wang/gorm_learn/config"
  8. "gorm.io/gorm"
  9. )
  10. type Model struct {
  11. UUIID uint `gorm:"primaryKey"`
  12. Time time.Time `gorm:"column:my_time"` //指定 db 列名
  13. }
  14. type User struct {
  15. Model Model `gorm:"embedded;embeddedPrefix:in_"`
  16. Name string `gorm:"default:张三"`
  17. Email string `gorm:"not null"`
  18. Age uint8
  19. Birthday *time.Time
  20. MemberNumber sql.NullString
  21. ActivatedAt sql.NullTime
  22. }
  23. type res struct { //返回结果结构体
  24. Name string
  25. Age uint8
  26. }
  27. func TestCreate() {
  28. db := config.Init()
  29. err := db.AutoMigrate(&User{})
  30. if err != nil {
  31. print(err)
  32. return
  33. }
  34. }
  35. func AddUserTest() {
  36. //create := config.Init().Create(&User{Name: "测试", Email: "45654", Age: 24})
  37. //create := config.Init().Select("name","email").Create(&User{Name: "测试", Email: "45654", Age: 24})//只创建name和email
  38. create := config.Init().Omit("age").Create(&[]User{
  39. {Name: "测试", Email: "45654", Age: 24}}) //除了age之外全部创建
  40. //print(create.Error)//是否报错
  41. if create.Error != nil {
  42. print(create.Error)
  43. }
  44. print(create.RowsAffected) //影响行数
  45. if create.RowsAffected != 0 {
  46. fmt.Printf("数据插入成功")
  47. }
  48. }
  49. func FindUserTest() {
  50. //result:=map[string] interface{}{}
  51. user := new([]User)
  52. //res:=new([]res)
  53. var res []res
  54. //config.Init().M
  55. //odel(&User{}).First(&result)//方式1
  56. //tx := config.Init().Where("name","测试1").Model(&User{}).First(&user) //方式2
  57. //tx := config.Init().Where(User{Name: "测试1"}).Model(&User{}).First(&user) //方式3
  58. //tx := config.Init().Where(map[string]interface{}{
  59. // "name":"测试1",
  60. //}).Model(&User{}).First(&user) //方式4
  61. //tx := config.Init().Where("name =? and age =?","测试1",24).Or("email =?","1").First(&user) //方式5
  62. //tx := config.Init().First(&user,"name =?","测试1") //方式6
  63. //tx := config.Init().First(&user, map[string]interface{}{"name":"测试1"}) //方式6
  64. //tx := config.Init().Find(&user, map[string]interface{}{"age":"24"}) //方式6
  65. //tx := config.Init().Where("age =?",24).Find(&user) //方式7
  66. //tx := config.Init().Where("age like ?","%2%").Find(&user) //方式7
  67. //tx := config.Init().Select("name").Where("age like ?","%2%").Find(&user) //方式8
  68. //tx := config.Init().Omit("name").Where("age like ?","%2%").Find(&user) //方式8
  69. tx := config.Init().Model(&user).Omit("name").Where("age like ?", "%2%").Find(&res) //方式9,智能选择字段
  70. fmt.Println(errors.Is(tx.Error, gorm.ErrRecordNotFound)) //判断是否查询到记录,
  71. // 判断first是否查询成功
  72. fmt.Println(res)
  73. //config.Init().Model(&User{}).Take(&user)
  74. //fmt.Println(user)
  75. //config.Init().Model(&User{}).Last(&user)
  76. //fmt.Println(user)
  77. }
  78. func UpdateUserTest() {
  79. //update只更新你选择的字段
  80. // updates 更新所有字段此时有两种形式一种为Map一 种 为结构体结构体零值不参与更新
  81. //save无论如何都更新 所有的内容包括值
  82. var user []User
  83. // config.Init().Model(user).Where("age like ?", "%2%").Update("name", "111")
  84. // config.Init().First(&user).Updates(map[string]interface{}{"name": " ", "age": 0})
  85. config.Init().Find(&user).Updates(map[string]interface{}{"name": " ", "age": 0}) //批量更新
  86. }
  87. func DeleteUserTest() {
  88. var user []User
  89. // var res []res
  90. config.Init().Model(&user).Unscoped().Where("age = 20").Find(&user).Delete(&user) //删除
  91. }

发表评论

表情:
评论列表 (有 0 条评论,125人围观)

还没有评论,来说两句吧...

相关阅读