代码拉取完成,页面将自动刷新
package mysql
import (
"fmt"
"strings"
)
type updateBuilder struct {
from string
updateFileds []string
whereAnd []string
whereOr []string
}
func NewUpdateSQL() UpdateBuilder {
return &updateBuilder{}
}
func (self *updateBuilder) Table(query string) UpdateBuilder {
self.from = query
return self
}
func (self *updateBuilder) Where(query string, args ...any) UpdateBuilder {
currWhere := prepare(query, args...)
if currWhere != "" {
if self.whereAnd == nil {
self.whereAnd = []string{fmt.Sprintf("%s", currWhere)}
} else {
self.whereAnd = append(self.whereAnd, fmt.Sprintf("%s", currWhere))
}
}
return self
}
func (self *updateBuilder) Or(query string, args ...any) UpdateBuilder {
currWhere := prepare(query, args...)
if currWhere != "" {
if self.whereOr == nil {
self.whereOr = []string{fmt.Sprintf("%s", currWhere)}
} else {
self.whereOr = append(self.whereOr, fmt.Sprintf("%s", currWhere))
}
}
return self
}
func (self *updateBuilder) Update(column string, v any) UpdateBuilder {
if column != "" {
currUpdate := prepare(fmt.Sprintf("%s = ?", column), v)
if self.updateFileds == nil {
self.updateFileds = []string{currUpdate}
} else {
self.updateFileds = append(self.updateFileds, currUpdate)
}
}
return self
}
func (self *updateBuilder) ToSql() string {
baseSQL := fmt.Sprintf("update %s set ", self.from)
if self.updateFileds != nil {
baseSQL += " " + strings.Join(self.updateFileds, ",")
}
whereSql := ""
if self.whereAnd != nil && len(self.whereAnd) > 0 {
whereSql = strings.Join(self.whereAnd, " and ")
}
if self.whereOr != nil && len(self.whereOr) > 0 {
if whereSql != "" {
whereSql += " or "
}
whereSql += strings.Join(self.whereOr, " or ")
}
if whereSql != "" {
baseSQL += " where " + whereSql
}
return baseSQL
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。