Skip to content

5.更新

afumu edited this page Jun 6, 2023 · 1 revision

根据ID更新记录

  u := User{ID: 1, Username: "张三", Password: "123456"}
  resultDb := gplus.UpdateById[User](&u)
  fmt.Println(resultDb.Error)
  fmt.Println(resultDb.RowsAffected)
  // UPDATE `users` SET `username`='张三',`password`='123456',`updated_at`='2023-06-03 16:54:37.677' WHERE `id` = 1

上面的方式,默认是不更新零值得,如果需要更新零值,可以使用UpdateZeroById

  u := User{ID: 1, Username: "张三", Password: "123456"}
  resultDb := gplus.UpdateZeroById[User](&u)
  fmt.Println(resultDb.Error)
  fmt.Println(resultDb.RowsAffected)
  // UPDATE `users` SET `username`='张三',`password`='123456',`address`='',`age`=0,`phone`='',`score`=0,`dept`='',`created_at`='0000-00-00 00:00:00',`updated_at`='2023--03 16:56:01.117' WHERE `id` = 1

选择字段更新

  u := User{ID: 1, Username: "张三", Age: 20, Password: "123456", Score: 18, Address: "北京", Dept: "开发"}
  model := gplus.GetModel[User]()
  resultDb := gplus.UpdateById[User](&u, gplus.Select(&model.Username, &model.Password))
  fmt.Println(resultDb.Error)
  fmt.Println(resultDb.RowsAffected)
  //  UPDATE `users` SET `username`='张三',`password`='123456',`updated_at`='2023-06-03 17:02:36.579' WHERE `id` = 1

忽略字段更新

  u := User{ID: 1, Username: "张三", Age: 20, Password: "123456", Score: 18, Address: "北京", Dept: "开发"}
  model := gplus.GetModel[User]()
  resultDb := gplus.UpdateById[User](&u, gplus.Omit(&model.Score, &model.Address))
  fmt.Println(resultDb.Error)
  fmt.Println(resultDb.RowsAffected)
  // UPDATE `users` SET `username`='张三',`password`='123456',`age`=20,`dept`='开发',`updated_at`='2023-06-03 17:03:32.902' WHERE `id` = 1

根据条件更新

  q, u := gplus.NewQuery[User]()
  q.Eq(&u.ID, 1).Set(&u.Score, 60)
  resultDb := gplus.Update(q)
  fmt.Println(resultDb.Error)
  fmt.Println(resultDb.RowsAffected)
  // UPDATE `users` SET `score`=60,`updated_at`='2023-06-03 16:58:11.93' WHERE id = 1