diff --git a/GoMybatis.go b/GoMybatis.go index 9600a32..460070d 100644 --- a/GoMybatis.go +++ b/GoMybatis.go @@ -42,13 +42,13 @@ func WriteMapperPtrByEngine(ptr interface{}, xml []byte, sessionEngine SessionEn //写入方法内容,例如 //type ExampleActivityMapperImpl struct { // SelectAll func(result *[]Activity) error -// SelectByCondition func(name string, startTime time.Time, endTime time.Time, page int, size int, result *[]Activity) error `mapperParams:"name,startTime,endTime,page,size"` +// SelectByCondition func(name string, startTime time.Time, endTime time.Time, page int, size int, result *[]Activity) error `args:"name,startTime,endTime,page,size"` // UpdateById func(session *GoMybatis.Session, arg Activity, result *int64) error //只要参数中包含有*GoMybatis.Session的类型,框架默认使用传入的session对象,用于自定义事务 // Insert func(arg Activity, result *int64) error -// CountByCondition func(name string, startTime time.Time, endTime time.Time, result *int) error `mapperParams:"name,startTime,endTime"` +// CountByCondition func(name string, startTime time.Time, endTime time.Time, result *int) error `args:"name,startTime,endTime"` //} -//func的基本类型的参数(例如string,int,time.Time,int64,float....)个数无限制(并且需要用Tag指定参数名逗号隔开,例如`mapperParams:"id,phone"`),返回值必须有error -//func的结构体参数无需指定mapperParams的tag,框架会自动扫描它的属性,封装为map处理掉 +//func的基本类型的参数(例如string,int,time.Time,int64,float....)个数无限制(并且需要用Tag指定参数名逗号隔开,例如`args:"id,phone"`),返回值必须有error +//func的结构体参数无需指定args的tag,框架会自动扫描它的属性,封装为map处理掉 //使用WriteMapper函数设置代理后即可正常使用。 func WriteMapper(bean reflect.Value, xml []byte, sessionEngine SessionEngine) { beanCheck(bean) @@ -143,7 +143,7 @@ func beanCheck(value reflect.Value) { } } if argsLen > 1 && customLen > 1 { - panic(`[GoMybats] ` + fieldItem.Name + ` must add tag "mapperParams:"*,*..."`) + panic(`[GoMybats] ` + fieldItem.Name + ` must add tag "args:"*,*..."`) } } } @@ -304,9 +304,9 @@ func methodFieldCheck(beanType *reflect.Type, methodType *reflect.StructField) { panic(buffer.String()) } - var mapperParams = methodType.Tag.Get("mapperParams") - if methodType.Type.NumOut() > 1 && mapperParams == "" && !(methodType.Name == "NewSession") { - log.Println("[GoMybatis] warning ======================== " + (*beanType).Name() + "." + methodType.Name + "() have not define tag mapperParams:\"\",maybe can not get param value!") + var args = methodType.Tag.Get("args") + if methodType.Type.NumOut() > 1 && args == "" && !(methodType.Name == "NewSession") { + log.Println("[GoMybatis] warning ======================== " + (*beanType).Name() + "." + methodType.Name + "() have not define tag args:\"\",maybe can not get param value!") } } diff --git a/GoMybatisEngine_test.go b/GoMybatisEngine_test.go index 393903f..18967f4 100644 --- a/GoMybatisEngine_test.go +++ b/GoMybatisEngine_test.go @@ -193,12 +193,12 @@ func (it *TestSession) StmtConvert() (stmt.StmtIndexConvert, error) { } //定义mapper文件的接口和结构体 -// 支持基本类型(int,string,time.Time,float...且需要指定参数名称`mapperParams:"name"以逗号隔开,且位置要和实际参数相同) +// 支持基本类型(int,string,time.Time,float...且需要指定参数名称`args:"name"以逗号隔开,且位置要和实际参数相同) //自定义结构体参数(属性必须大写) //参数中除了session指针外,为指针类型的皆为数据 // 函数return必须为error 为返回错误信息 type ExampleActivityMapperImpl struct { - SelectByCondition func(session *Session, name *string, startTime *time.Time, endTime *time.Time, page *int, size *int) ([]example.Activity, error) `mapperParams:"session,name,startTime,endTime,page,size"` + SelectByCondition func(session *Session, name *string, startTime *time.Time, endTime *time.Time, page *int, size *int) ([]example.Activity, error) `args:"session,name,startTime,endTime,page,size"` } //初始化mapper文件和结构体 diff --git a/GoMybatisProxy.go b/GoMybatisProxy.go index 0d33184..bd90f95 100644 --- a/GoMybatisProxy.go +++ b/GoMybatisProxy.go @@ -25,10 +25,10 @@ func ProxyValue(mapperValue reflect.Value, buildFunc func(funcField reflect.Stru } func buildProxy(v reflect.Value, buildFunc func(funcField reflect.StructField, field reflect.Value) func(arg ProxyArg) []reflect.Value) { - for{ + for { if v.Kind() == reflect.Ptr { v = v.Elem() - }else{ + } else { break } } @@ -74,13 +74,13 @@ func buildProxy(v reflect.Value, buildFunc func(funcField reflect.StructField, f func buildRemoteMethod(source reflect.Value, f reflect.Value, ft reflect.Type, sf reflect.StructField, proxyFunc func(arg ProxyArg) []reflect.Value) { var tagParams []string - var mapperParams = sf.Tag.Get(`mapperParams`) - if mapperParams != `` { - tagParams = strings.Split(mapperParams, `,`) + var args = sf.Tag.Get(`args`) + if args != `` { + tagParams = strings.Split(args, `,`) } var tagParamsLen = len(tagParams) if tagParamsLen > ft.NumIn() { - panic(`[GoMybatisProxy] method fail! the tag "mapperParams" length can not > arg length ! filed=` + sf.Name) + panic(`[GoMybatisProxy] method fail! the tag "args" length can not > arg length ! filed=` + sf.Name) } var tagArgs = make([]TagArg, 0) if tagParamsLen != 0 { @@ -94,7 +94,7 @@ func buildRemoteMethod(source reflect.Value, f reflect.Value, ft reflect.Type, s } var tagArgsLen = len(tagArgs) if tagArgsLen > 0 && ft.NumIn() != tagArgsLen { - panic(`[GoMybatisProxy] method fail! the tag "mapperParams" length != args length ! filed = ` + sf.Name) + panic(`[GoMybatisProxy] method fail! the tag "args" length != args length ! filed = ` + sf.Name) } var fn = func(args []reflect.Value) (results []reflect.Value) { proxyResults := proxyFunc(ProxyArg{}.New(tagArgs, args)) diff --git a/GoMybatisProxy_test.go b/GoMybatisProxy_test.go index 081b638..caa2c30 100644 --- a/GoMybatisProxy_test.go +++ b/GoMybatisProxy_test.go @@ -7,7 +7,7 @@ import ( ) type TestMapper struct { - SelectByIds func(id string) (string, error) `mapperParams:"ids"` + SelectByIds func(id string) (string, error) `args:"ids"` } func TestUseMapperValue(t *testing.T) { diff --git a/GoMybatisTempleteDecoder.go b/GoMybatisTempleteDecoder.go index e350417..c26556a 100644 --- a/GoMybatisTempleteDecoder.go +++ b/GoMybatisTempleteDecoder.go @@ -640,9 +640,9 @@ func (it *GoMybatisTempleteDecoder) DecodeCollectionName(method *reflect.StructF for i := 0; i < numIn; i++ { var itemType = method.Type.In(i) if itemType.Kind() == reflect.Slice || itemType.Kind() == reflect.Array { - var mapperParams = method.Tag.Get("mapperParams") - var args = strings.Split(mapperParams, ",") - if mapperParams == "" || args == nil || len(args) == 0 { + var params = method.Tag.Get("args") + var args = strings.Split(params, ",") + if params == "" || args == nil || len(args) == 0 { collection = DefaultOneArg + strconv.Itoa(i) } else { if args[i] == "" { diff --git a/GoMybatisTempleteDecoder_test.go b/GoMybatisTempleteDecoder_test.go index 9beb372..a470a4d 100644 --- a/GoMybatisTempleteDecoder_test.go +++ b/GoMybatisTempleteDecoder_test.go @@ -10,10 +10,10 @@ import ( ) type ExampleActivityMapper struct { - SelectTemplete func(name string, session Session) ([]example.Activity, error) `mapperParams:"name,session"` - InsertTemplete func(args []example.Activity, session Session) (int64, error) `mapperParams:"args,session"` - UpdateTemplete func(arg example.Activity, session Session) (int64, error) `mapperParams:"name,session"` - DeleteTemplete func(name string, session Session) (int64, error) `mapperParams:"name,session"` + SelectTemplete func(name string, session Session) ([]example.Activity, error) `args:"name,session"` + InsertTemplete func(args []example.Activity, session Session) (int64, error) `args:"args,session"` + UpdateTemplete func(arg example.Activity, session Session) (int64, error) `args:"name,session"` + DeleteTemplete func(name string, session Session) (int64, error) `args:"name,session"` } //初始化mapper文件和结构体 diff --git a/README-ch.md b/README-ch.md index bd0bb40..d9ed39b 100644 --- a/README-ch.md +++ b/README-ch.md @@ -60,7 +60,7 @@ go env -w GOSUMDB=off //go.mod加入依赖 require ( github.com/go-sql-driver/mysql v1.5.0 - github.com/zhuxiujia/GoMybatis v6.2.2+incompatible + github.com/zhuxiujia/GoMybatis v6.2.3+incompatible ) ``` @@ -146,6 +146,7 @@ func main() { ``` xml对应以下定义的Mapper结构体方法,然后将生成对应的SQL语句 +旧版本使用mapperParams的tag,单词太长容易拼错,新版改为args ```go type Activity struct { Id string `json:"id"` @@ -160,12 +161,12 @@ type Activity struct { } type ExampleActivityMapper struct { //调用即可生成sql(带有逻辑删除) select * from biz_activity where delete_flag = 1 and name = #{name} - SelectTemplete func(name string) ([]Activity, error) `mapperParams:"name"` + SelectTemplete func(name string) ([]Activity, error) `args:"name"` InsertTemplete func(arg Activity) (int64, error) - InsertTempleteBatch func(args []Activity) (int64, error) `mapperParams:"args"` + InsertTempleteBatch func(args []Activity) (int64, error) `args:"args"` //生成sql(带有乐观锁.逻辑删除) update biz_activity set name = #{name},remark=#{remark},version=#{version+1} where delete_flag = 1 and id = #{id} and version = #{version} - UpdateTemplete func(arg Activity) (int64, error) `mapperParams:"name"` - DeleteTemplete func(name string) (int64, error) `mapperParams:"name"` + UpdateTemplete func(arg Activity) (int64, error) `args:"name"` + DeleteTemplete func(name string) (int64, error) `args:"name"` } ``` diff --git a/README.md b/README.md index 397f3e7..73eb34f 100644 --- a/README.md +++ b/README.md @@ -150,11 +150,11 @@ type Activity struct { DeleteFlag int `json:"deleteFlag"` } type ExampleActivityMapper struct { - SelectTemplete func(name string) ([]Activity, error) `mapperParams:"name"` + SelectTemplete func(name string) ([]Activity, error) `args:"name"` InsertTemplete func(arg Activity) (int64, error) - InsertTempleteBatch func(args []Activity) (int64, error) `mapperParams:"args"` - UpdateTemplete func(arg Activity) (int64, error) `mapperParams:"name"` - DeleteTemplete func(name string) (int64, error) `mapperParams:"name"` + InsertTempleteBatch func(args []Activity) (int64, error) `args:"args"` + UpdateTemplete func(arg Activity) (int64, error) `args:"name"` + DeleteTemplete func(name string) (int64, error) `args:"name"` } ``` diff --git a/example/Example_ActivityMapper.xml b/example/Example_ActivityMapper.xml index 963b242..d0b9062 100644 --- a/example/Example_ActivityMapper.xml +++ b/example/Example_ActivityMapper.xml @@ -39,7 +39,7 @@ - +