From 365701c933ef3a91e91ec395f44d9a2af30eb54d Mon Sep 17 00:00:00 2001 From: tuuz Date: Mon, 30 Oct 2023 11:38:36 +0800 Subject: [PATCH] =?UTF-8?q?1.=E4=BF=AE=E5=A4=8DOracle=E4=BD=BF=E7=94=A8Rep?= =?UTF-8?q?lace=E5=87=BA=E9=94=99=E7=9A=84BUG=202.=E9=99=8D=E4=BD=8E?= =?UTF-8?q?=E6=A1=86=E6=9E=B6=E5=9C=A8=E5=8E=9F=E7=89=88Oracle=E6=93=8D?= =?UTF-8?q?=E4=BD=9C=E4=B8=AD=E5=8F=AF=E8=83=BD=E5=87=BA=E7=8E=B0=E5=88=A0?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E7=9A=84=E9=A3=8E=E9=99=A9=203.=E9=99=8D?= =?UTF-8?q?=E4=BD=8E=E5=8E=9F=E7=89=88Execute=E6=89=A7=E8=A1=8C=E5=99=A8?= =?UTF-8?q?=E5=8F=AF=E8=83=BD=E5=87=BA=E7=8E=B0=E8=AF=AF=E5=88=A0=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E7=9A=84=E9=A3=8E=E9=99=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- builder_default.go | 5 ++++- builder_oracle.go | 11 +++++++++++ orm_execute.go | 2 +- 3 files changed, 16 insertions(+), 2 deletions(-) diff --git a/builder_default.go b/builder_default.go index e4dadc2..bd06b43 100644 --- a/builder_default.go +++ b/builder_default.go @@ -130,8 +130,10 @@ func (b *BuilderDefault) BuildExecute(operType string) (sqlStr string, args []in switch operType { case "insert": sqlStr = fmt.Sprintf("INSERT INTO %s (%s) VALUES %s", b.BuildTable(), insertkey, insertval) + break case "replace": sqlStr = fmt.Sprintf("REPLACE INTO %s (%s) VALUES %s", b.BuildTable(), insertkey, insertval) + break case "update": where, err = b.BuildWhere() if err != nil { @@ -144,8 +146,8 @@ func (b *BuilderDefault) BuildExecute(operType string) (sqlStr string, args []in return } sqlStr = fmt.Sprintf("UPDATE %s SET %s%s", b.BuildTable(), update, where) + break case "delete": - where, err = b.BuildWhere() if err != nil { b.IOrm.GetISession().GetIEngin().GetLogger().Error(err.Error()) @@ -157,6 +159,7 @@ func (b *BuilderDefault) BuildExecute(operType string) (sqlStr string, args []in return } sqlStr = fmt.Sprintf("DELETE FROM %s%s", b.BuildTable(), where) + break } args = b.GetBindValues() diff --git a/builder_oracle.go b/builder_oracle.go index 66d3173..a1d80ea 100644 --- a/builder_oracle.go +++ b/builder_oracle.go @@ -156,6 +156,7 @@ func (b *BuilderOracle) BuildExecuteOra(operType string) (sqlStr string, args [] switch operType { case "insert": sqlStr = fmt.Sprintf("INSERT INTO %s (%s) VALUES %s", b.BuildTable(), insertkey, insertval) + break case "update": if where == "" && b.IOrm.GetForce() == false { err = errors.New("出于安全考虑, update时where条件不能为空, 如果真的不需要where条件, 请使用Force()(如: db.xxx.Force().Update())") @@ -163,6 +164,7 @@ func (b *BuilderOracle) BuildExecuteOra(operType string) (sqlStr string, args [] return } sqlStr = fmt.Sprintf("UPDATE %s SET %s%s", b.BuildTable(), update, where) + break case "delete": if where == "" && b.IOrm.GetForce() == false { err = errors.New("出于安全考虑, delete时where条件不能为空, 如果真的不需要where条件, 请使用Force()(如: db.xxx.Force().Delete())") @@ -170,6 +172,15 @@ func (b *BuilderOracle) BuildExecuteOra(operType string) (sqlStr string, args [] return } sqlStr = fmt.Sprintf("DELETE FROM %s%s", b.BuildTable(), where) + break + case "replace": + if where == "" && b.IOrm.GetForce() == false { + err = errors.New("出于安全考虑, update时where条件不能为空, 如果真的不需要where条件, 请使用Force()(如: db.xxx.Force().Update())") + b.IOrm.GetISession().GetIEngin().GetLogger().Error(err.Error()) + return + } + sqlStr = fmt.Sprintf("REPLACE INTO %s (%s) VALUES %s", b.BuildTable(), insertkey, insertval) + break } args = b.IOrm.GetBindValues() diff --git a/orm_execute.go b/orm_execute.go index b5b74ee..cff1033 100644 --- a/orm_execute.go +++ b/orm_execute.go @@ -41,7 +41,7 @@ func (dba *Orm) Delete() (int64, error) { return dba.exec("delete") } -// Delete : delete data +// exec : Execute a sql func (dba *Orm) exec(operType string, data ...interface{}) (int64, error) { if operType == "insert" || operType == "update" { if dba.GetData() == nil {