mybatis test使用时遇到的坑

前言

	好记性不如烂笔头,工作中有些不是很常用的东西,没过多久就又忘了,写博客是便于自己后面使用时更快的提升工作效率,避免重复踩坑。这里引用网上其他作者的分享进行一个总结记录。

test中字符串的比较

customerType 是String 类型的

test="customerType == ‘0’ " 这样判断的话 会发现执行到 引用 NotReception 中去 !
用 单引号包住最外层 里面使用 双引号引用是可以的 不过更好的办法是
在引用字符串参数后 加上 toString() 方法,mybatis在反射的时候会加上方法

test中相等判断使用的时==

test=“count == 1”
//当少打了一个等号
test=“count = 1”//很不幸,这mybatis擅作主张的处理为返回了count,true、false将会由count决定

test=“1 == count”
//当少打了一个等号
test=“1 = count” //执行时,mybatis会很友好的给你抛个异常

注意’Y’ 和“Y”的区别

and status = 0 当传入的type的值为y的时候,if判断内的sql也不会执行,抱着这个疑问就去看了mybatis是怎么解析sql的。 mybatis是使用的OGNL表达式来进行解析的,在OGNL的表达式中,'y'会被解析成字符,因为java是强类型的,char 和 一个string 会导致不等。所以if标签中的sql不会被解析。具体的请参照 OGNL 表达式的语法。到这里,上面的问题终于解决了,只需要把代码修改成: Xml代码 and status = 0 ## 0与""比较的问题 test中使用判断语句时,当判断条件为flag!="" 且flag为数字等于0时返回的结果为false

以上几种是比较常用的方式,在网上找了相应的资料巩固后,整理出来,希望可以帮到你。

参考:
https://blog.csdn.net/publicv/article/details/84671494
https://www.jianshu.com/p/9fab369b3959
https://cheng-xinwei.iteye.com/blog/2008200
https://www.jianshu.com/p/683792a434f3

猜你喜欢

转载自blog.csdn.net/hbn1326317071/article/details/89647920