数据库连接就是使用之前的连接,下面就直接展示修改的源码
package mysql
import (
"math/rand"
"strconv"
"testing"
"time"
)
type Usergamedata struct {
UserId uint32 `gorm:"column:USER_ID;PRIMARY_KEY"`
UserType string `gorm:"column:USER_TYPE"`
UserWealth uint32 `gorm:"column:USER_WEALTH"`
Signature string `gorm:"column:SIGNATURE"`
}
func (Usergamedata) TableName() string {
return "usergamedata"
}
func updateUsergamedataWealth() {
// 更新一个字段
db := sqlDb()
rand.Seed(time.Now().UnixNano())
err := db.Model(&Usergamedata{}).Where("USER_ID = ?", 1187918).Update("USER_WEALTH", rand.Intn(int(time.Now().Unix()))).Error
if err != nil {
panic(err)
}
}
func updateUsergamedata() {
// 更新部分字段
db := sqlDb()
rand.Seed(time.Now().UnixNano())
err := db.Model(&Usergamedata{}).Where("USER_ID = ?", 1187918).Updates(&Usergamedata{
UserType: "Normal",
UserWealth: uint32(rand.Intn(int(time.Now().Unix()))),
}).Error
if err != nil {
panic(err)
}
}
func updateUserwealth() {
// 更新部分字段,只更新非空字段
db := sqlDb()
rand.Seed(time.Now().UnixNano())
err := db.Model(&Usergamedata{}).Where("USER_ID = ?", 1187918).Updates(&Usergamedata{
UserWealth: uint32(rand.Intn(int(time.Now().Unix()))),
Signature: "",
}).Error
if err != nil {
panic(err)
}
}
func updateUserwealthMap() {
// 更新部分字段,map
db := sqlDb()
rand.Seed(time.Now().UnixNano())
err := db.Model(&Usergamedata{}).Where("USER_ID = ?", 1187918).Updates(map[string]interface{}{
"USER_WEALTH": uint32(rand.Intn(int(time.Now().Unix()))),
"SIGNATURE": string(strconv.Itoa(rand.Intn(int(time.Now().Unix())))),
}).Error
if err != nil {
panic(err)
}
}
func saveUserWealthAll() {
// 更新全部字段,save更新时,有该数据则修改,无该数据则添加
db := sqlDb()
rand.Seed(time.Now().UnixNano())
err := db.Save(&Usergamedata{
UserId: 1187918,
UserType: "Normal",
UserWealth: uint32(rand.Intn(int(time.Now().Unix()))),
Signature: string(strconv.Itoa(rand.Intn(int(time.Now().Unix())))),
}).Error
if err != nil {
panic(err)
}
}
func saveUserWealth() {
// 更新全部字段,有字段为空,字段为空时,自动更新为0或""等默认值
db := sqlDb()
rand.Seed(time.Now().UnixNano())
err := db.Save(&Usergamedata{
UserId: 1187918,
UserType: "Normal",
UserWealth: uint32(rand.Intn(int(time.Now().Unix()))),
}).Error
if err != nil {
panic(err)
}
}
func updateUsergamedataSelect() {
// 更新选中字段,没有在select中的字段不更新
db := sqlDb()
rand.Seed(time.Now().UnixNano())
err := db.Model(&Usergamedata{}).Select("SIGNATURE").Where("USER_ID = ?", 1187918).Updates(Usergamedata{
UserWealth: uint32(rand.Intn(int(time.Now().Unix()))),
Signature: "",
}).Error
if err != nil {
panic(err)
}
}
func updateUserwealthIn() {
// 更新部分字段,只更新非空字段
db := sqlDb()
rand.Seed(time.Now().UnixNano())
err := db.Model(&Usergamedata{}).Where("USER_ID IN ?", []int{1187918, 1098838}).Updates(&Usergamedata{
UserWealth: uint32(rand.Intn(int(time.Now().Unix()))),
Signature: string(strconv.Itoa(rand.Intn(int(time.Now().Unix())))),
}).Error
if err != nil {
panic(err)
}
}
func updateUsergamedataWealthErr() {
// 更新一个字段,不加where条件时会被阻断,如果需要更新全部数据,可以加where(1=1)
db := sqlDb()
rand.Seed(time.Now().UnixNano())
err := db.Model(&Usergamedata{}).Update("USER_WEALTH", 9000).Error
if err != nil {
panic(err)
}
}
func updateUsergamedataWealthColumn() {
// 更新,column
db := sqlDb()
rand.Seed(time.Now().UnixNano())
err := db.Model(&Usergamedata{}).Where("USER_ID = ?", 1187918).UpdateColumn("USER_WEALTH", uint32(rand.Intn(int(time.Now().Unix())))).Error
if err != nil {
panic(err)
}
}
func TestUpdate(t *testing.T) {
updateUsergamedataWealth()
updateUsergamedata()
updateUserwealth()
updateUserwealthMap()
saveUserWealthAll()
saveUserWealth()
updateUsergamedataSelect()
updateUserwealthIn()
updateUsergamedataWealthErr()
updateUsergamedataWealthColumn()
}
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。