Skip to content

Commit

Permalink
add print warning option
Browse files Browse the repository at this point in the history
  • Loading branch information
zhuxiujia committed Jun 17, 2020
1 parent 16dbfec commit b2eab30
Show file tree
Hide file tree
Showing 4 changed files with 21 additions and 6 deletions.
14 changes: 8 additions & 6 deletions GoMybatis.go
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ func WriteMapper(bean reflect.Value, xml []byte, sessionEngine SessionEngine) {
var mapperTree = LoadMapperXml(xml)
sessionEngine.TempleteDecoder().DecodeTree(mapperTree, bean.Type())
//构建期使用的map,无需考虑并发安全
var methodXmlMap = makeMethodXmlMap(bean, mapperTree, sessionEngine.SqlBuilder())
var methodXmlMap = makeMethodXmlMap(bean, mapperTree, sessionEngine)
var resultMaps = makeResultMaps(mapperTree)
var returnTypeMap = makeReturnTypeMap(bean.Elem().Type())
var beanName = bean.Type().PkgPath() + bean.Type().String()
Expand Down Expand Up @@ -243,7 +243,7 @@ func makeResultMaps(xmls map[string]etree.Token) map[string]map[string]*ResultPr
}

//return a map map[`method`]*MapperXml
func makeMethodXmlMap(bean reflect.Value, mapperTree map[string]etree.Token, sqlBuilder SqlBuilder) map[string]*Mapper {
func makeMethodXmlMap(bean reflect.Value, mapperTree map[string]etree.Token, engine SessionEngine) map[string]*Mapper {
var beanType = bean.Type()
if beanType.Kind() == reflect.Ptr {
beanType = beanType.Elem()
Expand All @@ -255,12 +255,12 @@ func makeMethodXmlMap(bean reflect.Value, mapperTree map[string]etree.Token, sql
var fieldItem = beanType.Field(i)
if fieldItem.Type.Kind() == reflect.Func {
//field must be func
methodFieldCheck(&beanType, &fieldItem)
methodFieldCheck(&beanType, &fieldItem, engine.IsPrintWarning())
var mapperXml = findMapperXml(mapperTree, fieldItem.Name)
if mapperXml != nil {
methodXmlMap[fieldItem.Name] = &Mapper{
xml: mapperXml,
nodes: sqlBuilder.NodeParser().Parser(mapperXml.Child),
nodes: engine.SqlBuilder().NodeParser().Parser(mapperXml.Child),
}
} else {
if fieldItem.Name == NewSessionFunc {
Expand All @@ -275,7 +275,7 @@ func makeMethodXmlMap(bean reflect.Value, mapperTree map[string]etree.Token, sql
}

//方法基本规则检查
func methodFieldCheck(beanType *reflect.Type, methodType *reflect.StructField) {
func methodFieldCheck(beanType *reflect.Type, methodType *reflect.StructField, warning bool) {
if methodType.Type.NumOut() < 1 {
var buffer bytes.Buffer
buffer.WriteString("[GoMybatis] bean ")
Expand Down Expand Up @@ -304,7 +304,9 @@ func methodFieldCheck(beanType *reflect.Type, methodType *reflect.StructField) {

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!")
if warning {
log.Println("[GoMybatis] warning ======================== " + (*beanType).Name() + "." + methodType.Name + "() have not define tag args:\"\",maybe can not get param value!")
}
}
}

Expand Down
9 changes: 9 additions & 0 deletions GoMybatisEngine.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ import (
type GoMybatisEngine struct {
mutex sync.RWMutex //读写锁
isInit bool //是否初始化
isPrintWarning bool //是否打印警告
dataSourceRouter DataSourceRouter //动态数据源路由器
log Log //日志实现类
logEnable bool //是否允许日志输出(默认开启)
Expand Down Expand Up @@ -221,3 +222,11 @@ func (it *GoMybatisEngine) GoroutineIDEnable() bool {
func (it *GoMybatisEngine) LogSystem() *LogSystem {
return it.logSystem
}

func (it *GoMybatisEngine) SetPrintWarning(print bool) {
it.isPrintWarning = print
}

func (it *GoMybatisEngine) IsPrintWarning() bool {
return it.isPrintWarning
}
2 changes: 2 additions & 0 deletions SqlEngine.go
Original file line number Diff line number Diff line change
Expand Up @@ -98,4 +98,6 @@ type SessionEngine interface {
GoroutineIDEnable() bool

LogSystem() *LogSystem

IsPrintWarning() bool
}
2 changes: 2 additions & 0 deletions example/Example_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -71,6 +71,8 @@ func init() {

//设置打印自动生成的xml 到控制台方便调试,false禁用
engine.TempleteDecoder().SetPrintElement(false)
//设置是否打印警告(建议开启)
engine.SetPrintWarning(false)

//mysql链接格式为 用户名:密码@(数据库链接地址:端口)/数据库名称 例如root:123456@(***.mysql.rds.aliyuncs.com:3306)/test
_, err := engine.Open("mysql", MysqlUri) //此处请按格式填写你的mysql链接,这里用*号代替
Expand Down

0 comments on commit b2eab30

Please sign in to comment.