Mybaties我们经常用到动态SQL,如下我们利用动态去做判断,这样写当然没问题,但是当我们不是去判断orgCode(本文中orgCode一直为String类型)是否为空而是判断orgCode是否是一个值的时候该怎么做?
<if test="orgCode != null and orgCode != ''">
</if>
一般我们会理所当然的这么写,但是此时就会报Error querying database. Cause: java.lang.NumberFormatException: For input string: "A"
这个是因为A加的是单引号,在编译的时候加单引号的A不能被解析为字符串,而被解析为了number类型,造成了以上报错。想要解决问题就要让A在解析的时候被解析的字符串类型,这里有三种方式实现。
<if test="orgCode != 'A'">
</if>
方式一:'A'.toString()
<if test="orgCode != 'A'.toString()">
方式二:加转义实体字符串引号"
<if test="orgCode != "'A'"">
方式三:内外层单双引号交换
<if test='orgCode != "A"'>