mybatis if判断两个值是否相等存在的坑啊
2019-09-20 18:12
2316 查看
1、使用“==”比较 字符类型 的值
用“==”比较的使用场景:
不管你用的什么类型的变量,只要变量的值是字符类型就用“==”
产生原因:
在mybatis中如果<if>标签用一个“=”判断左右两边的值是否相等,则mybatis会把“=”两边的值自动拆箱成基础数据类型(Number类型)
示例如下:
参数:String queryKwd = "a";
<select id="getFactoryInfoList" resultMap="BaseResultMap" > select * from PM_FACTORY_INFO where DEL_FLAG='0' <if test="queryKwd == 'a'"><!--正确写法--> and 1=1 </if> <if test="queryKwd = 'a'"><!--错误写法: 字符类型不能用一个“=”判断是否相等,会报错:Caused by: java.lang.NumberFormatException: For input string: "a" --> and 2=2 </if> </select>
2、使用“=”比较 基本数据类型 的值
用“=”比较的使用场景:
不管你用的什么类型的变量,只要变量的值是基础数值类型就用“=”
产生原因:
在mybatis中如果<if>标签用一个“=”判断左右两边的值是否相等,则mybatis会把“=”两边的值自动拆箱成基础数据类型(Number类型)
示例如下:
参数:String queryKwd = "1";
<select id="getFactoryInfoList" resultMap="BaseResultMap" > select * from PM_FACTORY_INFO where DEL_FLAG='0' <if test="queryKwd == '1'"><!--错误写法,虽然不报错,但是永远不会成立--> and 1=1 </if> <if test="queryKwd = '1'"><!--正确写法--> and 2=2 </if> </select>
3、重要提示
在使用mybatis时,需要特别注意,当使用的参数不管是String/Object/int等类型的变量,我们需要清楚业务变量的值会是字符型还是数值型
只要变量值是字符型就用“==”!!!
只要变量值是数值型就用“=”!!!
相关文章推荐
- mybatis xml文件中用 if 标签判断字符串是否相等
- Struts标签if判断两个字符串是否相等
- struts2 s:if 判断两个变量是否相等
- <c:if>判断两个<c:forEach>里的数据是否相等
- <c:if>判断两个<c:forEach>里的数据是否相等
- A B两个相同长度整数数组,判断相同下标对应值是否相等,true或者false 存在布尔数组C中
- <c:if>判断两个<c:forEach>里的数据是否相等
- mybatis中使用if标签比较两个字符串是否相等
- mybatis中使用if标签比较两个字符串是否相等
- mybatis中使用if标签比较两个字符串是否相等
- (hdu step 9.1.1)A == B ?(在这个数字有可能是大数并且存在无效0的情况下,判断这两个数字是否相等)
- (selenium+python)判断一个元素是否存在,if的错误用法
- SQL Server判断对象是否存在 (if exists (select * from sysobjects )(转)
- Java中判断两个Long类型是否相等
- 判断两个float类型数据是否相等
- SQL Server判断对象是否存在 (if exists (select * from sysobjects )(转)
- [AS3]判断两个对象是否相等
- 判断序列中是否存在两个元素之和为x,时间复杂度O(nlgn),算法导论练习2.3,linux纯C实现
- golang中判断两个slice是否相等
- Linux系统shell脚本判断变量文件目录:权限、是否存在、空值、相等