From 8a7232357d52262c5d81e8e808967bd22cca2634 Mon Sep 17 00:00:00 2001 From: John Date: Fri, 25 May 2018 18:20:40 +0800 Subject: [PATCH] =?UTF-8?q?=E6=94=B9=E8=BF=9Bgdb.Map/List=E5=8F=8Ag.Map/Li?= =?UTF-8?q?st=E7=9A=84=E7=B1=BB=E5=9E=8B=E5=AE=9A=E4=B9=89=EF=BC=8C?= =?UTF-8?q?=E6=94=B9=E7=94=A8=E5=88=AB=E5=90=8D=E7=89=B9=E6=80=A7=E4=BB=A5?= =?UTF-8?q?=E4=BE=BF=E6=94=AF=E6=8C=81=E5=8E=9F=E7=94=9F=E7=B1=BB=E5=9E=8B?= =?UTF-8?q?=E8=BE=93=E5=85=A5(map/slice)=EF=BC=8C=E5=B9=B6=E4=BF=AE?= =?UTF-8?q?=E5=A4=8Dgdb.Model.Update=E6=96=B9=E6=B3=95=E5=8F=82=E6=95=B0?= =?UTF-8?q?=E5=A4=84=E7=90=86=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- g/database/gdb/gdb.go | 10 ++++++---- g/database/gdb/gdb_base.go | 12 ++++++------ g/database/gdb/gdb_model.go | 30 ++++++++++++------------------ g/g.go | 8 ++++---- geg/database/mysql/mysql.go | 8 ++++++-- 5 files changed, 34 insertions(+), 34 deletions(-) diff --git a/g/database/gdb/gdb.go b/g/database/gdb/gdb.go index 8a811563a..50256a701 100644 --- a/g/database/gdb/gdb.go +++ b/g/database/gdb/gdb.go @@ -97,11 +97,13 @@ type Record map[string]Value // 返回数据表记录List type Result []Record -// 关联数组,绑定一条数据表记录 -type Map map[string]interface{} -// 关联数组列表(索引从0开始的数组),绑定多条记录 -type List []Map +// 关联数组,绑定一条数据表记录(使用别名) +type Map = map[string]interface{} + +// 关联数组列表(索引从0开始的数组),绑定多条记录(使用别名) +type List = []Map + // MySQL接口对象 var linkMysql = &dbmysql{} diff --git a/g/database/gdb/gdb_base.go b/g/database/gdb/gdb_base.go index 45eca9c9a..cc02d4518 100644 --- a/g/database/gdb/gdb_base.go +++ b/g/database/gdb/gdb_base.go @@ -228,11 +228,11 @@ func (db *Db) getInsertOperationByOption(option uint8) string { // 2: save: 如果数据存在(主键或者唯一索引),那么更新,否则写入一条新数据 // 3: ignore: 如果数据存在(主键或者唯一索引),那么什么也不做 func (db *Db) insert(table string, data Map, option uint8) (sql.Result, error) { - var keys []string + var fields []string var values []string var params []interface{} for k, v := range data { - keys = append(keys, db.charl + k + db.charr) + fields = append(fields, db.charl + k + db.charr) values = append(values, "?") params = append(params, v) } @@ -247,7 +247,7 @@ func (db *Db) insert(table string, data Map, option uint8) (sql.Result, error) { } return db.Exec( fmt.Sprintf("%s INTO %s%s%s(%s) VALUES(%s) %s", - operation, db.charl, table, db.charr, strings.Join(keys, ","), strings.Join(values, ","), updatestr), params... + operation, db.charl, table, db.charr, strings.Join(fields, ","), strings.Join(values, ","), updatestr), params... ) } @@ -345,10 +345,10 @@ func (db *Db) Update(table string, data interface{}, condition interface{}, args var fields []string keys := refValue.MapKeys() for _, k := range keys { - fields = append(fields, fmt.Sprintf("%s%s%s=?", db.charl, k, db.charr)) - params = append(params, gconv.String(refValue.MapIndex(k).Interface())) - updates = strings.Join(fields, ",") + fields = append(fields, fmt.Sprintf("%s%s%s=?", db.charl, k, db.charr)) + params = append(params, gconv.String(refValue.MapIndex(k).Interface())) } + updates = strings.Join(fields, ",") } else { updates = gconv.String(data) } diff --git a/g/database/gdb/gdb_model.go b/g/database/gdb/gdb_model.go index 3fa2a6401..8a32d77be 100644 --- a/g/database/gdb/gdb_model.go +++ b/g/database/gdb/gdb_model.go @@ -137,6 +137,9 @@ func (md *Model) Data(data...interface{}) (*Model) { // 链式操作, CURD - Insert/BatchInsert func (md *Model) Insert() (sql.Result, error) { + if md.data == nil { + return nil, errors.New("inserting into table with empty data") + } // 批量操作 if list, ok := md.data.(List); ok { batch := 10 @@ -148,12 +151,7 @@ func (md *Model) Insert() (sql.Result, error) { } else { return md.tx.BatchInsert(md.tables, list, batch) } - } - // 记录操作 - if md.data == nil { - return nil, errors.New("inserting into table with empty data") - } - if dataMap, ok := md.data.(Map); ok { + } else if dataMap, ok := md.data.(Map); ok { if md.tx == nil { return md.db.Insert(md.tables, dataMap) } else { @@ -165,6 +163,9 @@ func (md *Model) Insert() (sql.Result, error) { // 链式操作, CURD - Replace/BatchReplace func (md *Model) Replace() (sql.Result, error) { + if md.data == nil { + return nil, errors.New("replacing into table with empty data") + } // 批量操作 if list, ok := md.data.(List); ok { batch := 10 @@ -176,12 +177,7 @@ func (md *Model) Replace() (sql.Result, error) { } else { return md.tx.BatchReplace(md.tables, list, batch) } - } - // 记录操作 - if md.data == nil { - return nil, errors.New("replacing into table with empty data") - } - if dataMap, ok := md.data.(Map); ok { + } else if dataMap, ok := md.data.(Map); ok { if md.tx == nil { return md.db.Insert(md.tables, dataMap) } else { @@ -193,6 +189,9 @@ func (md *Model) Replace() (sql.Result, error) { // 链式操作, CURD - Save/BatchSave func (md *Model) Save() (sql.Result, error) { + if md.data == nil { + return nil, errors.New("replacing into table with empty data") + } // 批量操作 if list, ok := md.data.(List); ok { batch := 10 @@ -204,12 +203,7 @@ func (md *Model) Save() (sql.Result, error) { } else { return md.tx.BatchSave(md.tables, list, batch) } - } - // 记录操作 - if md.data == nil { - return nil, errors.New("saving into table with empty data") - } - if dataMap, ok := md.data.(Map); ok { + } else if dataMap, ok := md.data.(Map); ok { if md.tx == nil { return md.db.Save(md.tables, dataMap) } else { diff --git a/g/g.go b/g/g.go index 8f399bca6..430ab82be 100644 --- a/g/g.go +++ b/g/g.go @@ -26,11 +26,11 @@ const ( gIS_DATABASE_CONFIG_CACHED = "gf.core.component.database.cached" ) -// 常用map数据结构 -type Map map[string]interface{} +// 常用map数据结构(使用别名) +type Map = map[string]interface{} -// 常用list数据结构 -type List []Map +// 常用list数据结构(使用别名) +type List = []Map // 阻塞等待HTTPServer执行完成(同一进程多HTTPServer情况下) diff --git a/geg/database/mysql/mysql.go b/geg/database/mysql/mysql.go index 8278e0e92..427548548 100644 --- a/geg/database/mysql/mysql.go +++ b/geg/database/mysql/mysql.go @@ -477,7 +477,9 @@ func mapToStruct() { } func main() { - r, err := db.Table("user").Where("name = ?", "'jack'; delete from `user`").All() + r, err := db.Table("user").Data([]map[string]interface{}{ + map[string]interface{}{"name" : "john11111"}, + }).Insert() fmt.Println(r) fmt.Println(err) //create() @@ -498,7 +500,9 @@ func main() { //linkopUpdate2() //linkopUpdate3() //linkopUpdate4() - //keepPing() + // //transaction1() //transaction2() + // + //keepPing() } \ No newline at end of file