Skip to content

Commit

Permalink
新增session 隐式实现
Browse files Browse the repository at this point in the history
  • Loading branch information
zhuxiujia committed Apr 13, 2019
1 parent 414196a commit 79e1552
Show file tree
Hide file tree
Showing 3 changed files with 20 additions and 9 deletions.
8 changes: 6 additions & 2 deletions GoMybatisProxy.go
Original file line number Diff line number Diff line change
Expand Up @@ -46,9 +46,12 @@ func buildMapper(v reflect.Value, buildFunc func(funcField reflect.StructField)
if f.CanSet() {
switch ft.Kind() {
case reflect.Struct:
if buildFunc != nil {
buildMapper(f,buildFunc)//循环扫描
}
case reflect.Func:
if buildFunc != nil {
buildRemoteMethod(f, ft, sf, buildFunc(sf))
buildRemoteMethod(v,f, ft, sf, buildFunc(sf))
}
}
}
Expand All @@ -60,7 +63,7 @@ func buildMapper(v reflect.Value, buildFunc func(funcField reflect.StructField)
}
}

func buildRemoteMethod(f reflect.Value, ft reflect.Type, sf reflect.StructField, proxyFunc func(args []reflect.Value, tagArgs []TagArg) []reflect.Value) {
func buildRemoteMethod(source reflect.Value,f reflect.Value, ft reflect.Type, sf reflect.StructField, proxyFunc func(args []reflect.Value, tagArgs []TagArg) []reflect.Value) {
var tagParams []string
var mapperParams = sf.Tag.Get(`mapperParams`)
if mapperParams != `` {
Expand Down Expand Up @@ -98,5 +101,6 @@ func buildRemoteMethod(f reflect.Value, ft reflect.Type, sf reflect.StructField,
} else {
f.Set(reflect.MakeFunc(ft, fn))
}
println("[GoMybatis] write method success:"+source.Type().Name()+" > "+sf.Name+" "+f.Type().String())
tagParams = nil
}
6 changes: 6 additions & 0 deletions SessionSupport.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
package GoMybatis


type SessionSupport struct {
NewSession func() (Session, error) //session为事务操作
}
15 changes: 8 additions & 7 deletions example/Example_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,8 @@ import (
//自定义结构体参数(属性必须大写)
//方法 return 必须包含有error ,为了返回错误信息
type ExampleActivityMapper struct {
GoMybatis.SessionSupport //session事务操作 写法1. ExampleActivityMapper.SessionSupport.NewSession()
NewSession func() (GoMybatis.Session, error) //session事务操作.写法2 ExampleActivityMapper.NewSession()
//模板示例
SelectTemplete func(name string) ([]Activity, error) `mapperParams:"name"`
SelectCountTemplete func(name string) (int64, error) `mapperParams:"name"`
Expand All @@ -30,11 +32,10 @@ type ExampleActivityMapper struct {
SelectByCondition func(name *string, startTime *time.Time, endTime *time.Time, page *int, size *int) ([]Activity, error) `mapperParams:"name,startTime,endTime,page,size"`
UpdateById func(session *GoMybatis.Session, arg Activity) (int64, error)
Insert func(arg Activity) (int64, error)
CountByCondition func(name string, startTime time.Time, endTime time.Time) (int, error) `mapperParams:"name,startTime,endTime"`
DeleteById func(id string) (int64, error) `mapperParams:"id"`
Choose func(deleteFlag int) ([]Activity, error) `mapperParams:"deleteFlag"`
SelectLinks func(column string) ([]Activity, error) `mapperParams:"column"`
NewSession func() (GoMybatis.Session, error) //session为事务操作
CountByCondition func(name string, startTime time.Time, endTime time.Time) (int, error) `mapperParams:"name,startTime,endTime"`
DeleteById func(id string) (int64, error) `mapperParams:"id"`
Choose func(deleteFlag int) ([]Activity, error) `mapperParams:"deleteFlag"`
SelectLinks func(column string) ([]Activity, error) `mapperParams:"column"`
}

//初始化mapper文件和结构体
Expand Down Expand Up @@ -150,7 +151,7 @@ func Test_select_all(t *testing.T) {
if err != nil {
panic(err)
}
var b,_=json.Marshal(result)
var b, _ = json.Marshal(result)
fmt.Println("result=", string(b))
}

Expand Down Expand Up @@ -205,7 +206,7 @@ func Test_local_Transation(t *testing.T) {
return
}
//使用事务
var session, err = exampleActivityMapper.NewSession()
var session, err = exampleActivityMapper.SessionSupport.NewSession()
if err != nil {
t.Fatal(err)
}
Expand Down

0 comments on commit 79e1552

Please sign in to comment.