mybatis中的test都怎么用,mybatis常见问题
目录
mybatistest语句失效解决方案也很简单。myBatiste判断的注意事项错误地对一个传入的整数数据使用了以下判断方法。同样,整数数据将被转换为双精度类型。
00-1010一般情况下,在编写if test或when test语句的动态sql时,条件引用都是双引号和单引号。
如下所示:
select id= sel 1 result type= User select * from TB _ User where choose when test= User!=null和用户!= 和user=# { user }/when test= passwd!=null和passwd!= 和passwd=# {passwd}/when other和1=1/other/choose/where/select但是今天我们发现了一个问题,传入值为0或1时不执行sql失效。
如下所示:
在when test= user= 1 和user=# {user}/when之后,发现是MyBatis自己解析的问题。在标签中,MyBatis由OGNL表达式解析。这个地方需要关注。当单引号中有字符时,OGNL会用java中的char类型来解析,所以当char类型与带等号的参数String类型比较时,结果为false。
mybatis test语句失效
是用双引号将测试中的单个字符括起来。
if test=param!= * select when test= param . index of( sub )!=-1 /当否则/否则/选择/如果
00-1010使用mybatis进行判断时,一定要注意传入的数据类型是否与判断的目标值类型一致。
在最新的开发过程中
解决方案也很简单
if test=appType!=null和appType!= 和a.c _ appType=# {apptype}/if,其中appType是整数数据。可以看到,测试判断中使用了appType!=。
在业务功能测试过程中,发现传入值为0时,条件过滤器不起作用。经过调试,发现mybatis会将空字符串转换成double类型的0.0。
如下图所示:
00-1010如下图所示:
所以在mybatis判断的时候,数字0和空字符串是相等的,但是在我们的if判断中,这个条件只有在不相等的时候才会起作用。
所以在使用mybatis进行判断时,一定要注意类型是否一致,不要对数字类型判断空字符串的情况。
以上个人经验,希望能给大家一个参考,也希望大家能支持盛行的IT。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。