improve package gjson; replace fmt.Errorf to gerror; improve examples for package gdb

This commit is contained in:
John Guo
2021-09-13 16:43:09 +08:00
parent cc60bc9dab
commit 006fb79967
56 changed files with 304 additions and 158 deletions

View File

@ -4,7 +4,7 @@
[database.logger]
Level = "all"
Stdout = true
CtxKeys = ["Trace-Id"]
CtxKeys = ["RequestId"]
[database.default]
link = "mysql:root:12345678@tcp(127.0.0.1:3306)/test"
debug = true

View File

@ -2,6 +2,7 @@ package main
import (
"github.com/gogf/gf/database/gdb"
"github.com/gogf/gf/os/gctx"
"sync"
"time"
)
@ -24,13 +25,16 @@ func init() {
}
func main() {
wg := sync.WaitGroup{}
var (
wg = sync.WaitGroup{}
ctx = gctx.New()
)
for i := 0; i < 100000; i++ {
wg.Add(1)
go func() {
defer wg.Done()
time.Sleep(10 * time.Second)
db.Table("user").Where("id=1").All()
db.Ctx(ctx).Model("user").Where("id=1").All()
}()
}
wg.Wait()

View File

@ -3,26 +3,22 @@ package main
import (
"fmt"
"github.com/gogf/gf/frame/g"
"github.com/gogf/gf/os/gctx"
)
func main() {
db := g.DB()
var (
db = g.DB()
ctx = gctx.New()
)
// 开启调试模式以便于记录所有执行的SQL
db.SetDebug(true)
r, e := db.GetAll("SELECT * from `user` where id in(?)", g.Slice{})
r, e := db.Ctx(ctx).GetAll("SELECT * from `user` where id in(?)", g.Slice{})
if e != nil {
fmt.Println(e)
}
if r != nil {
fmt.Println(r)
}
return
//r, e := db.Table("user").Where("id in(?)", g.Slice{}).All()
//if e != nil {
// fmt.Println(e)
//}
//if r != nil {
// fmt.Println(r.List())
//}
}

View File

@ -2,12 +2,18 @@ package main
import (
"github.com/gogf/gf/frame/g"
"github.com/gogf/gf/os/gctx"
)
func main() {
db := g.DB()
var (
db = g.DB()
ctx = gctx.New()
)
db.Table("user").Where("nickname like ? and passport like ?", g.Slice{"T3", "t3"}).OrderBy("id asc").All()
db.Ctx(ctx).Model("user").
Where("nickname like ? and passport like ?", g.Slice{"T3", "t3"}).
OrderAsc("id").All()
conditions := g.Map{
"nickname like ?": "%T%",
@ -16,8 +22,8 @@ func main() {
"create_time > ?": 0,
"id in(?)": g.Slice{1, 2, 3},
}
db.Table("user").Where(conditions).OrderBy("id asc").All()
db.Ctx(ctx).Model("user").Where(conditions).OrderAsc("id").All()
var params []interface{}
db.Table("user").Where("1=1", params).OrderBy("id asc").All()
db.Ctx(ctx).Model("user").Where("1=1", params).OrderAsc("id").All()
}

View File

@ -3,10 +3,14 @@ package main
import (
"fmt"
"github.com/gogf/gf/frame/g"
"github.com/gogf/gf/os/gctx"
)
func main() {
db := g.DB()
var (
db = g.DB()
ctx = gctx.New()
)
db.SetDebug(true)
list := make(g.List, 0)
for i := 0; i < 100; i++ {
@ -14,7 +18,7 @@ func main() {
"name": fmt.Sprintf(`name_%d`, i),
})
}
r, e := db.Table("user").Data(list).Batch(2).Insert()
r, e := db.Ctx(ctx).Model("user").Data(list).Batch(2).Insert()
if e != nil {
panic(e)
}

View File

@ -2,6 +2,7 @@ package main
import (
"fmt"
"github.com/gogf/gf/os/gctx"
"github.com/gogf/gf/crypto/gaes"
"github.com/gogf/gf/database/gdb"
@ -19,6 +20,9 @@ func main() {
Role: "master",
Charset: "utf8",
})
var (
ctx = gctx.New()
)
db, err := gdb.New()
if err != nil {
panic(err)
@ -33,7 +37,7 @@ func main() {
}
// 写入
r, err := db.Table("user").Data(g.Map{
r, err := db.Ctx(ctx).Model("user").Data(g.Map{
"uid": 1,
"name": encryptedName,
}).Save()
@ -43,9 +47,9 @@ func main() {
fmt.Println(r.RowsAffected())
// 查询
one, err := db.Table("user").Where("name=?", encryptedName).One()
one, err := db.Ctx(ctx).Model("user").Where("name=?", encryptedName).One()
if err != nil {
fmt.Println(err)
}
fmt.Println(one.ToMap())
fmt.Println(one.Map())
}

View File

@ -2,19 +2,23 @@ package main
import (
"fmt"
"github.com/gogf/gf/os/gctx"
"github.com/gogf/gf/frame/g"
)
func main() {
db := g.DB()
var (
db = g.DB()
ctx = gctx.New()
)
db.SetDebug(true)
r, e := db.Table("test").All()
r, e := db.Ctx(ctx).Model("test").All()
if e != nil {
panic(e)
}
if r != nil {
fmt.Println(r.ToList())
fmt.Println(r.List())
}
}

View File

@ -2,6 +2,7 @@ package main
import (
"github.com/gogf/gf/database/gdb"
"github.com/gogf/gf/os/gctx"
"github.com/gogf/gf/util/gutil"
"time"
)
@ -17,6 +18,9 @@ func main() {
Role: "master",
Charset: "utf8",
})
var (
ctx = gctx.New()
)
db, err := gdb.New()
if err != nil {
panic(err)
@ -27,7 +31,7 @@ func main() {
// 执行2次查询并将查询结果缓存3秒并可执行缓存名称(可选)
for i := 0; i < 3; i++ {
r, _ := db.Table("user").Cache(3000*time.Second).Where("id=?", 1).One()
r, _ := db.Ctx(ctx).Model("user").Cache(3000*time.Second).Where("id=?", 1).One()
gutil.Dump(r.Map())
}

View File

@ -6,7 +6,7 @@ import (
func main() {
// error!
r, err := g.DB().Table("user").Where(g.Map{
r, err := g.DB().Model("user").Where(g.Map{
"or": g.Map{
"nickname": "jim",
"create_time > ": "2019-10-01",

View File

@ -7,7 +7,7 @@ import (
)
func main() {
if r, err := g.DB().Table("user").Where("uid=?", 1).One(); err == nil {
if r, err := g.DB().Model("user").Where("uid=?", 1).One(); err == nil {
fmt.Println(r["uid"].Int())
fmt.Println(r["name"].String())
} else {

View File

@ -8,7 +8,7 @@ import (
func main() {
g.Config().SetFileName("config2.toml")
if r, err := g.DB().Table("user").Where("uid=?", 1).One(); err == nil {
if r, err := g.DB().Model("user").Where("uid=?", 1).One(); err == nil {
fmt.Println(r["uid"].Int())
fmt.Println(r["name"].String())
} else {

View File

@ -8,14 +8,14 @@ import (
func main() {
g.Config().SetFileName("config3.toml")
if r, err := g.DB().Table("user").Where("uid=?", 1).One(); err == nil {
if r, err := g.DB().Model("user").Where("uid=?", 1).One(); err == nil {
fmt.Println(r["uid"].Int())
fmt.Println(r["name"].String())
} else {
fmt.Println(err)
}
if r, err := g.DB("user").Table("user").Where("uid=?", 1).One(); err == nil {
if r, err := g.DB("user").Model("user").Where("uid=?", 1).One(); err == nil {
fmt.Println(r["uid"].Int())
fmt.Println(r["name"].String())
} else {

View File

@ -6,7 +6,7 @@ import (
)
func main() {
ctx := context.WithValue(context.Background(), "Trace-Id", "123456789")
ctx := context.WithValue(context.Background(), "RequestId", "123456789")
_, err := g.DB().Ctx(ctx).Query("SELECT 1")
if err != nil {
panic(err)

View File

@ -6,7 +6,7 @@ import (
)
func main() {
ctx := context.WithValue(context.Background(), "Trace-Id", "123456789")
ctx := context.WithValue(context.Background(), "RequestId", "123456789")
_, err := g.DB().Model("user").Ctx(ctx).All()
if err != nil {
panic(err)

View File

@ -2,23 +2,20 @@ package main
import (
"fmt"
"github.com/gogf/gf/os/gctx"
"github.com/gogf/gf/frame/g"
"github.com/gogf/gf/os/gtime"
)
func main() {
db := g.Database()
var (
db = g.DB()
ctx = gctx.New()
)
db.SetDebug(true)
//r, err := db.Table("user").Data("create_time", gtime.Now().String()).Insert()
//if err == nil {
// fmt.Println(r.LastInsertId())
//} else {
// panic(err)
//}
r, err := db.Table("user").Data(g.Map{
r, err := db.Ctx(ctx).Model("user").Data(g.Map{
"name": "john",
"create_time": gtime.Now().String(),
}).Insert()

View File

@ -3,6 +3,7 @@ package main
import (
"github.com/gogf/gf/database/gdb"
"github.com/gogf/gf/frame/g"
"github.com/gogf/gf/os/gctx"
"github.com/gogf/gf/os/glog"
)
@ -17,6 +18,9 @@ func main() {
Role: "master",
Charset: "utf8",
})
var (
ctx = gctx.New()
)
db, err := gdb.New()
if err != nil {
panic(err)
@ -27,11 +31,11 @@ func main() {
// 执行3条SQL查询
for i := 1; i <= 3; i++ {
db.Table("user").Where("uid=?", i).One()
db.Ctx(ctx).Model("user").Where("uid=?", i).One()
}
// 构造一条错误查询
db.Table("user").Where("no_such_field=?", "just_test").One()
db.Model("user").Where("no_such_field=?", "just_test").One()
db.Table("user").Data(g.Map{"name": "smith"}).Where("uid=?", 1).Save()
db.Ctx(ctx).Model("user").Data(g.Map{"name": "smith"}).Where("uid=?", 1).Save()
}

View File

@ -2,17 +2,21 @@ package main
import (
"github.com/gogf/gf/frame/g"
"github.com/gogf/gf/os/gctx"
)
func main() {
db := g.DB()
var (
db = g.DB()
ctx = gctx.New()
)
// 执行3条SQL查询
for i := 1; i <= 3; i++ {
db.Table("user").Where("id=?", i).One()
db.Ctx(ctx).Model("user").Where("id=?", i).One()
}
// 构造一条错误查询
db.Table("user").Where("no_such_field=?", "just_test").One()
db.Ctx(ctx).Model("user").Where("no_such_field=?", "just_test").One()
db.Table("user").Data(g.Map{"name": "smith"}).Where("uid=?", 1).Save()
db.Ctx(ctx).Model("user").Data(g.Map{"name": "smith"}).Where("uid=?", 1).Save()
}

View File

@ -18,7 +18,7 @@ func main() {
db.SetDebug(true)
r, e := db.Table("user").Data(g.Map{
r, e := db.Model("user").Data(g.Map{
"create_at": "now()",
}).Unscoped().Insert()
if e != nil {

View File

@ -8,7 +8,7 @@ import (
var (
tableName = "orders"
dao = g.DB().Table(tableName).Safe()
dao = g.DB().Model(tableName).Safe()
)
type OrderServiceEntity struct {

View File

@ -2,6 +2,7 @@ package main
import (
"fmt"
"github.com/gogf/gf/os/gctx"
"github.com/gogf/gf/database/gdb"
"github.com/gogf/gf/encoding/gparser"
@ -19,19 +20,22 @@ func main() {
Role: "master",
Charset: "utf8",
})
db := g.DB()
one, err := db.Table("user").Where("id=?", 1).One()
var (
db = g.DB()
ctx = gctx.New()
)
one, err := db.Ctx(ctx).Model("user").Where("id=?", 1).One()
if err != nil {
panic(err)
}
// 使用内置方法转换为json/xml
fmt.Println(one.ToJson())
fmt.Println(one.ToXml())
fmt.Println(one.Json())
fmt.Println(one.Xml())
// 自定义方法方法转换为json/xml
jsonContent, _ := gparser.VarToJson(one.ToMap())
jsonContent, _ := gparser.VarToJson(one.Map())
fmt.Println(string(jsonContent))
xmlContent, _ := gparser.VarToXml(one.ToMap())
xmlContent, _ := gparser.VarToXml(one.Map())
fmt.Println(string(xmlContent))
}

View File

@ -1,20 +1,24 @@
package main
import (
"github.com/gogf/gf/os/gctx"
"time"
"github.com/gogf/gf/frame/g"
)
func main() {
db := g.DB()
var (
db = g.DB()
ctx = gctx.New()
)
// 开启调试模式以便于记录所有执行的SQL
db.SetDebug(true)
for {
for i := 0; i < 10; i++ {
go db.Table("user").All()
go db.Ctx(ctx).Model("user").All()
}
time.Sleep(time.Millisecond * 100)
}

View File

@ -3,14 +3,18 @@ package main
import (
"fmt"
"github.com/gogf/gf/frame/g"
"github.com/gogf/gf/os/gctx"
"time"
)
func main() {
db := g.DB()
var (
db = g.DB()
ctx = gctx.New()
)
db.SetDebug(true)
for {
r, err := db.Table("user").All()
r, err := db.Ctx(ctx).Model("user").All()
fmt.Println(err)
fmt.Println(r)
time.Sleep(time.Second * 10)

View File

@ -17,7 +17,7 @@ func main() {
}
user := (*User)(nil)
fmt.Println(user)
err := db.Table("test").Where("id=1").Struct(&user)
err := db.Model("test").Where("id=1").Scan(&user)
fmt.Println(err)
fmt.Println(user)
}

View File

@ -2,13 +2,17 @@ package main
import (
"github.com/gogf/gf/frame/g"
"github.com/gogf/gf/os/gctx"
)
func main() {
db := g.DB()
var (
db = g.DB()
ctx = gctx.New()
)
db.SetDebug(true)
tables, err := db.Tables()
tables, err := db.Tables(ctx)
if err != nil {
panic(err)
}

View File

@ -2,20 +2,24 @@ package main
import (
"github.com/gogf/gf/frame/g"
"github.com/gogf/gf/os/gctx"
)
func main() {
db := g.DB()
var (
db = g.DB()
ctx = gctx.New()
)
db.SetDebug(true)
tables, e := db.Tables()
tables, e := db.Tables(ctx)
if e != nil {
panic(e)
}
if tables != nil {
g.Dump(tables)
for _, table := range tables {
fields, err := db.TableFields(table)
fields, err := db.TableFields(ctx, table)
if err != nil {
panic(err)
}

View File

@ -1,26 +1,29 @@
package main
import (
"context"
"github.com/gogf/gf/database/gdb"
"github.com/gogf/gf/frame/g"
"github.com/gogf/gf/os/gctx"
)
func main() {
var (
err error
db = g.DB()
ctx = gctx.New()
table = "user"
)
if err = db.Transaction(func(tx *gdb.TX) error {
if err = db.Transaction(ctx, func(ctx context.Context, tx *gdb.TX) error {
// Nested transaction 1.
if err = tx.Transaction(func(tx *gdb.TX) error {
if err = tx.Transaction(ctx, func(ctx context.Context, tx *gdb.TX) error {
_, err = tx.Model(table).Data(g.Map{"id": 1, "name": "john"}).Insert()
return err
}); err != nil {
return err
}
// Nested transaction 2, panic.
if err = tx.Transaction(func(tx *gdb.TX) error {
if err = tx.Transaction(ctx, func(ctx context.Context, tx *gdb.TX) error {
_, err = tx.Model(table).Data(g.Map{"id": 2, "name": "smith"}).Insert()
// Create a panic that can make this transaction rollback automatically.
panic("error")

View File

@ -12,7 +12,7 @@ import (
func main() {
db := g.DB()
table := "medicine_clinics_upload_yinchuan"
list, err := db.Table(table).All()
list, err := db.Model(table).All()
if err != nil && err != sql.ErrNoRows {
panic(err)
}

View File

@ -9,7 +9,7 @@ import (
func main() {
db := g.DB()
db.SetDebug(true)
result, err := db.Table("pw_passageway m,pw_template t").Data("t.status", 99).Where("m.templateId=t.id AND m.status = 0").Update()
result, err := db.Model("pw_passageway m,pw_template t").Data("t.status", 99).Where("m.templateId=t.id AND m.status = 0").Update()
if err != nil {
panic(err)
}

View File

@ -6,7 +6,7 @@ import (
)
func main() {
one, err := g.DB().Table("carlist c").
one, err := g.Model("carlist c").
LeftJoin("cardetail d", "c.postid=d.carid").
Where("c.postid", "142039140032006").
Fields("c.*,d.*").One()

View File

@ -1,9 +1,11 @@
package main
import (
"context"
"fmt"
"github.com/gogf/gf/database/gdb"
"github.com/gogf/gf/frame/g"
"github.com/gogf/gf/os/gctx"
"github.com/gogf/gf/util/gmeta"
)
@ -30,13 +32,13 @@ func main() {
}
db := g.DB()
db.Transaction(func(tx *gdb.TX) error {
err := db.Transaction(gctx.New(), func(ctx context.Context, tx *gdb.TX) error {
for i := 1; i <= 5; i++ {
// User.
user := User{
Name: fmt.Sprintf(`name_%d`, i),
}
lastInsertId, err := db.Model(user).Data(user).OmitEmpty().InsertAndGetId()
lastInsertId, err := db.Ctx(ctx).Model(user).Data(user).OmitEmpty().InsertAndGetId()
if err != nil {
return err
}
@ -45,7 +47,7 @@ func main() {
Uid: int(lastInsertId),
Address: fmt.Sprintf(`address_%d`, lastInsertId),
}
_, err = db.Model(userDetail).Data(userDetail).OmitEmpty().Insert()
_, err = db.Ctx(ctx).Model(userDetail).Data(userDetail).OmitEmpty().Insert()
if err != nil {
return err
}
@ -55,7 +57,7 @@ func main() {
Uid: int(lastInsertId),
Score: j,
}
_, err = db.Model(userScore).Data(userScore).OmitEmpty().Insert()
_, err = db.Ctx(ctx).Model(userScore).Data(userScore).OmitEmpty().Insert()
if err != nil {
return err
}
@ -63,4 +65,5 @@ func main() {
}
return nil
})
fmt.Println(err)
}

View File

@ -9,7 +9,7 @@ func test1() {
db := g.DB()
db.SetDebug(true)
time.Sleep(1 * time.Minute)
r, e := db.Table("test").Where("id", 10000).Count()
r, e := db.Model("test").Where("id", 10000).Count()
if e != nil {
panic(e)
}
@ -19,7 +19,7 @@ func test1() {
func test2() {
db := g.DB()
db.SetDebug(true)
dao := db.Table("test").Safe()
dao := db.Model("test").Safe()
time.Sleep(1 * time.Minute)
r, e := dao.Where("id", 10000).Count()
if e != nil {