func TestNullStructUpdate(engine *xorm.Engine, t *testing.T) { if true { // 测试可插入NULL item := new(NullType) item.Age = sql.NullInt64{23, true} item.Height = sql.NullFloat64{0, false} // update to NULL affected, err := engine.Id(2).Cols("height", "is_man").Update(item) if err != nil { t.Error(err) panic(err) } if affected != 1 { err := errors.New("update failed") t.Error(err) panic(err) } } if true { // 测试In update item := new(NullType) affected, err := engine.In("id", 3, 4).Cols("height", "is_man").Update(item) if err != nil { t.Error(err) panic(err) } if affected != 2 { err := errors.New("update failed") t.Error(err) panic(err) } } if true { // 测试where item := new(NullType) item.Name = sql.NullString{"nullname", true} item.IsMan = sql.NullBool{true, true} item.Age = sql.NullInt64{34, true} _, err := engine.Where("age > ?", 34).Update(item) if err != nil { t.Error(err) panic(err) } } if true { // 修改全部时,插入空值 item := &NullType{ Name: sql.NullString{"winxxp", true}, Age: sql.NullInt64{30, true}, Height: sql.NullFloat64{1.72, true}, // IsMan: sql.NullBool{true, true}, } _, err := engine.AllCols().Id(6).Update(item) if err != nil { t.Error(err) panic(err) } fmt.Println(item) } }