diff --git a/.example/database/gdb/driver/driver.go b/.example/database/gdb/driver/driver/driver.go similarity index 97% rename from .example/database/gdb/driver/driver.go rename to .example/database/gdb/driver/driver/driver.go index 0d0599c9c..e253f2bff 100644 --- a/.example/database/gdb/driver/driver.go +++ b/.example/database/gdb/driver/driver/driver.go @@ -12,8 +12,6 @@ import ( "github.com/gogf/gf/database/gdb" "github.com/gogf/gf/internal/intlog" "github.com/gogf/gf/text/gstr" - - _ "github.com/gf-third/mysql" ) type MyDriver struct { @@ -32,7 +30,7 @@ func (d *MyDriver) Open(config *gdb.ConfigNode) (*sql.DB, error) { ) } intlog.Printf("Open: %s", source) - if db, err := sql.Open("gf-mysql", source); err == nil { + if db, err := sql.Open("mysql", source); err == nil { return db, nil } else { return nil, err diff --git a/.example/database/gdb/driver/main.go b/.example/database/gdb/driver/main.go new file mode 100644 index 000000000..06ab7d0f9 --- /dev/null +++ b/.example/database/gdb/driver/main.go @@ -0,0 +1 @@ +package main diff --git a/database/gdb/gdb.go b/database/gdb/gdb.go index cc3e1b429..6496c7e10 100644 --- a/database/gdb/gdb.go +++ b/database/gdb/gdb.go @@ -104,7 +104,7 @@ type DB interface { TableFields(table string, schema ...string) (map[string]*TableField, error) // Internal methods. - handleTableName(table string) string + QuotePrefixTableName(table string) string filterFields(schema, table string, data map[string]interface{}) map[string]interface{} convertValue(fieldValue []byte, fieldType string) interface{} rowsToResult(rows *sql.Rows) (Result, error) @@ -126,6 +126,7 @@ type Core struct { // Driver is the interface for integrating sql drivers into package gdb. type Driver interface { + // New creates and returns a database object for specified database server. New(core *Core, node *ConfigNode) (DB, error) } diff --git a/database/gdb/gdb_core.go b/database/gdb/gdb_core.go index 599d12051..7ac95a739 100644 --- a/database/gdb/gdb_core.go +++ b/database/gdb/gdb_core.go @@ -70,7 +70,7 @@ func (c *Core) DoQuery(link dbLink, query string, args ...interface{}) (rows *sq Start: mTime1, End: mTime2, } - c.printSql(s) + c.writeSqlToLogger(s) } else { rows, err = link.Query(query, args...) } @@ -109,7 +109,7 @@ func (c *Core) DoExec(link dbLink, query string, args ...interface{}) (result sq Start: mTime1, End: mTime2, } - c.printSql(s) + c.writeSqlToLogger(s) } else { result, err = link.Exec(query, args...) } @@ -350,6 +350,11 @@ func (c *Core) Save(table string, data interface{}, batch ...int) (sql.Result, e // doInsert inserts or updates data for given table. // +// The parameter can be type of map/gmap/struct/*struct/[]map/[]struct, etc. +// Eg: +// Data(g.Map{"uid": 10000, "name":"john"}) +// Data(g.Slice{g.Map{"uid": 10000, "name":"john"}, g.Map{"uid": 20000, "name":"smith"}) +// // The parameter