我们mybatis中如何进行字符串的比较方式
正常情况下我们写 != 或者 ==的方式
这个出最初的写法
<if test="id != null and id != ''">
and product_id = 1
</if>
我们看一个高级的用法方式
我们传入一个字符串的方式进行比较的方式
容易出现问题
<if test="id != 0">
and product_id = 1
</if>
在传入值都为0或者都为inter的方式
但是现在传入的值是string 0
mybatis进行隐形转化
如果传入一个字符串
会出现错误
出现转化异常
Cause: java.lang.NumberFormatException: For input string: "xxxx"
现在我需要传入一个字符可以判断数字和字符串的方式
我们只能使用.equals的方式
但是这样还会出现一个问题
你会发现你传值为0始终不会走
and products = 1
<if test='id.equals("0")' >
and product_id = 1
</if>
我们现在有俩个写法
一般写法的方式
传入的值不会走!id.equlas('0')
在equlas中加一个单引号的方式
<if test="id !=null and !id.equals('2')">
and product_id = 2
</if>
第一个是双引号的方式
第二个是单引号的方式
只会传入字符串只会走单个引号的方式
我们这里传入1
按照取反的方式我们不会走1
我们现在走2的方式
单引号的方式
我们能看到应该不走2
但是查询2的方式
问题就是在equals中只能使用双引号的方式
如何使用其他那就无法进行判断了
<where>
<if test=' id != null and !id.equals("1")' >
and product_id = 1
</if>
<if test="id !=null and !id.equals('2')">
and product_id = 2
</if>
<if test='id.equals("xxxx")'>
and product_id = 4
</if>
</where>
我们一般使用单引号的方式比较多
但是使用双引号比较少的方式
高级方法我们使用equlas
可以进行更加高级查询的方式
总结一下
我们使用 id ! = '' 只能用普通的判断为空或者数据是否存在的方式
判断是否为数字的方式
mybatis会默认把string 0 为转化成数字的方式
进行判断
但是如果我们传入的数据有字符串和数字的方式
!= 就不实用
我们必须使用equlas 的方式进行判断
但是equlas中必须使用双引号进行判断
否则也会失效
因为默认传入的值就是双引号
在equals中加入单引号
无法进行判断
高级用法使用mybatis