提交 cc4191eb authored 作者: mooncake's avatar mooncake

update

上级 d49535f2
......@@ -172,7 +172,7 @@ func (x *ODao[T]) DeleteByIDsTx(ctx context.Context, tx *gorm.DB, ids []xsf.ID)
return nil
}
func (x *ODao[T]) UpdateByID(ctx context.Context, id xsf.ID, tb *T) error {
func (x *ODao[T]) UpdateByID(ctx context.Context, id xsf.ID, tb any) error {
if id <= 0 {
return nil
}
......@@ -182,7 +182,7 @@ func (x *ODao[T]) UpdateByID(ctx context.Context, id xsf.ID, tb *T) error {
return nil
}
func (x *ODao[T]) UpdateByIDSilent(ctx context.Context, id xsf.ID, tb *T) error {
func (x *ODao[T]) UpdateByIDSilent(ctx context.Context, id xsf.ID, tb any) error {
if id <= 0 {
return nil
}
......@@ -192,7 +192,7 @@ func (x *ODao[T]) UpdateByIDSilent(ctx context.Context, id xsf.ID, tb *T) error
return nil
}
func (x *ODao[T]) UpdateByIDs(ctx context.Context, ids []xsf.ID, tb *T) error {
func (x *ODao[T]) UpdateByIDs(ctx context.Context, ids []xsf.ID, tb any) error {
if len(ids) == 0 {
return nil
}
......@@ -202,7 +202,7 @@ func (x *ODao[T]) UpdateByIDs(ctx context.Context, ids []xsf.ID, tb *T) error {
return nil
}
func (x *ODao[T]) UpdateByIDTx(ctx context.Context, tx *gorm.DB, id xsf.ID, tb *T) error {
func (x *ODao[T]) UpdateByIDTx(ctx context.Context, tx *gorm.DB, id xsf.ID, tb any) error {
return x.updByIDTx(ctx, tx, id, tb)
}
......@@ -224,7 +224,7 @@ func (x *ODao[T]) updByIDTx(ctx context.Context, tx *gorm.DB, id xsf.ID, upd any
return nil
}
func (x *ODao[T]) UpdateByIDsTx(ctx context.Context, tx *gorm.DB, ids []xsf.ID, tb *T) error {
func (x *ODao[T]) UpdateByIDsTx(ctx context.Context, tx *gorm.DB, ids []xsf.ID, tb any) error {
return x.updByIDsTx(ctx, tx, ids, tb)
}
......@@ -232,6 +232,34 @@ func (x *ODao[T]) UpdateByIDsTx(ctx context.Context, tx *gorm.DB, ids []xsf.ID,
// ids 必传
// upd 可以是struct、map
// Updates 方法支持 struct 和 map[string]interface{} 参数。当使用 struct 更新时,默认情况下GORM 只会更新非零值的字段
// 1. 零值问题的解决方案
// 如果需要用 Updates更新零值字段,可以使用:
// // 方法1:使用Select指定字段
//
// db.Model(&user).Select("Name", "Email").Updates(User{
// Name: "张三",
// Email: "", // 这次会被更新
// })
//
// // 方法2:使用map和指针
//
// db.Model(&user).Updates(map[string]interface{}{
// "name": "张三",
// "email": "", // 使用map可以更新零值
// })
//
// 2. 与Save的区别
// // Updates - 只生成更新修改字段的SQL
// // SQL: UPDATE users SET name = '张三', age = 30 WHERE id = 1;
//
// db.Model(&user).Where("id = ?", 1).Updates(User{
// Name: "张三",
// Age: 30,
// })
//
// Save - 生成更新所有字段的SQL
// SQL: UPDATE users SET name = '张三', age = 30, email = ”, address = ”, ...所有字段 WHERE id = 1;
// db.Save(&user)
func (x *ODao[T]) updByIDsTx(ctx context.Context, tx *gorm.DB, ids []xsf.ID, upd any) error {
if len(ids) == 0 {
return nil
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论