读书人

Ibatis3中if test里面判断条件的解析有

发布时间: 2012-11-17 11:14:15 作者: rapoo

Ibatis3中if test里面判断条件的解析问题

今天遇到一个ibatis3的问题,sql里面if中对String类型的变量写判断条件,如下:
<if test=”userYNFlag == ‘Y’”>
???? AND use_yn='Y'
</if>
总是出错,抛出NumberFormatException异常,开始让我觉得,只能对数字类型的变量进行条件判断,但是,试了几种情况以后,发现了原因,是Ibatis3在解析这个表达式的时候,把’Y’解析成char,而不是String,但是他的错误提示又不准确,提示什么number之类的东西。所以弄得一头雾水。

用下面的方式就可以:
<if test='userYNFlag == "Y"'>
???? AND use_yn='Y'
</if>

解决这个问题以后,我又想到了int,因为int作为int类型的变量和作为Integer类型,初始化的值不一样,Integer就是null,int就是0,通过测试发现对于下面的判断:
<if test="roleId != null >
????? AND rmp.id=emp.id
</if>
在java里面roleId如果是int,而不是integer,这时候,它传到ibatis里面,就会初始化成0,而不是null,这时候,上面的判断就没意义了,因为他始终不是null。

1 楼 lijixu 2011-03-22 太有用了,帮我解决了一下很两手的问题,
为了回复一下,特地花时间,费了九牛二虎之力才完成那个 论坛规则测验,太可恶了。 2 楼 lijixu 2011-03-22 楼主,能留一个邮箱吗,以后有问题还望请教你,
我的邮箱地址是:lijixu6@qq.com,麻烦把你邮箱号发一下,发到我邮箱中,谢谢。

读书人网 >软件架构设计

热点推荐