mybatis if test为什么if test

 
其中publishType为传来的String类型参数想比较其不等于字符串2,但是判断不生效

单引号是char类型双引号是string类型!
char表示字符,定义时使用用单引号表示只能存储一个字符。
而String表示字符串定义时使用双引号表示,可以存储0个或多个字符,其实string类型就是char类型的数组表现形式
所以'2'被认为是char类型,和String类型不相等

 
 
}

版权声明:本文为博主原创文章未经博主允许不得转载。 /a/article/details/

}

今天工作中发现一个Long类型的参数沒有传到sql中去在sql xml配置文件中是使用if test标签判断:

 
通过debug发现参数中的version是有值的,但出来的sql语句就没有这个version
网上查了一些有不少同样这样的问題大致解决办法分两种:
 
 
这两种方法都是可以的,在我看来是这样如果这个version类型和我的情况一样,是包装类型而不是基本数据类型的話第一种就足够了,而且更贴近实际因为包装类型除了有值的情况就是null,不会为""空字符串的String类型不在我讨论的范围内,标题已经说叻是数字0况且如果是String的话就不会有这个问题了。
知道了怎么解决这个问题那就想知道为什么这个问题会出现,当然要查看mybatis的源码了
sql語句是通过获取BoundSql来的(网上查看mybatis层次结构),这个是通过方法getBoundSql()这个方法定义在一个接口SqlSource,它有五个实现从命名上看应该是找DynamicSqlSource,

if判断的這种属于动态的sql所以直接找它了

}

我要回帖

更多关于 mybatis if test 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信