<foreach collection="accurateSearchMap" index="key" item="item">
<if test="key == 'gcc.sex' and item != '3' and item!='' and item!=null">
and ${key} = #{item}
</if>
<if test="key == 'gcc.classes' and item != '3' and item!='' and item!=null">
and ${key} = #{item}
</if>
<if test="key == 'gcc.add_target' and item != '2' and item!='' and item!=null">
and ${key} = #{item}
</if>
<if test="key == 'gcc.custype' and item != '3' and item!='' and item!=null">
and ${key} = #{item}
</if>
<if test="item!='' and item!=null and key != 'gcc.sex' and key != 'gcc.classes' and key != 'gcc.add_target' and key != 'gcc.custype'">
and ${key} = #{item}
</if>
</foreach>
因为accurateSearchMap是Map<String, Object>类型的,所以键对应的值是Object类型的,而对象间用==或!=比较的是地址引用,所以在值为Object类型的情况下以上代码是有问题的。
解决办法是:在值item后加上toString方法的调用,'1'后面也要加toString方法的调用
分享到:
相关推荐
本文将详细讨论在MyBatis映射文件中,`if`标签判断字符串相等的两种方法。 ### 方法一:使用OGNL表达式 MyBatis的`if`标签内支持OGNL(Object-Graph Navigation Language)表达式,这是一种强大的表达式语言,用于...
这里我们将深入探讨如何正确使用`if`标签来判断字符串。 错误的写法通常会出现在直接比较字符串时没有正确地添加引号。比如,错误的写法是`if test=”status == ‘Y'”`。这样的写法会导致一个`...
例如,我们可以创建一个名为`CustomIfTagHandler`的类,用于处理类似`<if>`标签的逻辑判断。 ```java public class CustomIfTagHandler implements XMLTag { // 实现XMLTag接口的方法... } ``` 2. **注册标签处理...
在上面的示例中,test属性指定了一个判断条件:如果userName不为空且不为空字符串,则执行if标签中的Sql语句。 if标签的使用场景 if标签常用于实现动态查询、动态更新和动态插入等场景。例如: 1. 动态查询:根据...
注意,`<if>`标签用于判断`tags`是否为空或者其大小是否大于0,以决定是否需要执行`<foreach>`循环。这是因为如果用户没有选择任何标签,我们不希望生成任何`OR`条件,否则会导致查询结果不正确。 在实际开发中,你...
在处理SQL时,动态SQL功能是MyBatis的一大亮点,它有效地解决了SQL字符串拼接的问题,避免了手动拼接带来的错误和复杂性。 1. **If标签**:MyBatis的`<if>`标签用于条件判断,它允许我们在SQL语句中根据Java对象的...
这样做很安全,很迅速也是首选做法,有时你只是想直接在SQL语句中插入一个不改变的字符串。比如,像ORDER BY,你可以这样来使用: ORDER BY ${columnName} 这里MyBatis不会修改或转义字符串。 重要:接受从用户输出...
在问题描述中,开发者遇到的问题是在处理`<if>`标签时,bool类型的变量`byId`为`false`时判断不生效。通常,我们可能会这样写`<if>`标签: ```xml <if test="byId != null"> a.id = #{artName} </if> ``` 这种...
目录 使用场景 动态标签 if标签 where标签 choose、when、otherwise 标签 ...if标签通常用那个胡where语句,update语句,insert语句中,通过判断参数值来决定是否使用某个查询条件,判断是否更新某一个字段或插入某个字段
MyBatis的setting标签对应属性和值
标题 "mybatis collection list string" 暗示了我们讨论的主题是关于MyBatis框架中与集合(List)和字符串(String)处理相关的问题。在MyBatis这个强大的持久层框架中,集合和字符串的使用非常常见,尤其是在进行数据库...
项目需要springboot 可以绕过mybatis xml加载直接解析带标签的sql 演示代码,给需要的码农
技巧:MyBatis 中的trim标签,好用!.zip技巧:MyBatis 中的trim标签,好用!.zip技巧:MyBatis 中的trim标签,好用!.zip技巧:MyBatis 中的trim标签,好用!.zip技巧:MyBatis 中的trim标签,好用!.zip技巧:...
`collection`属性是必选的,在不同情况下该属性的值是不一样的: - 如果传入的是单参数且参数类型是一个`List`,则默认使用`list`作为`List`对象的键。 - 如果传入的是单参数且参数类型是一个`Array`,则默认使用`...
这种方式是无法查到数据的,因为查询条件值”sgl”和数据库中值”sgl “是不相等的。 如果使用trim()方式也可以查询到数据,如:conn=getConnection();ps=conn.prepareStatement("select * from t_user where trim...
"Mybatis foreach标签带来的空格、换行、回车问题及解决方案" Mybatis 中的 foreach 标签是一个功能强大的工具,允许开发者在 SQL 语句中循环遍历集合对象。但是,在使用 foreach 标签时,经常会遇到空格、换行、...
在另一方法`getListByStartDateAndEndDate`中,`<if>`标签用于判断`startDate`和`endDate`两个参数是否不相等。如果不相等,`<if>`标签内的内容(即`date between #{startDate} and #{endDate}`)将被添加到SQL语句...
### Mybatis排序无效问题解决 #### 问题背景与概述 在使用Mybatis框架进行数据库操作时,有时会遇到排序功能无法正常工作的现象。本篇文章旨在深入解析这一问题,并提供有效的解决方案。 #### 问题描述 在实际...
总的来说,MyBatis的`<foreach>`标签是处理动态SQL和集合数据的关键工具,它可以优雅地解决批量操作、条件查询等问题,让SQL语句的编写更加灵活和高效。正确理解和熟练运用`<foreach>`,能显著提升MyBatis的开发效率...
当你需要将一个字符串或者Reader对象插入到CLOB字段时,MyBatis默认可能无法正确处理。此时,你需要自定义一个TypeHandler来处理这种转换。创建一个实现`org.apache.ibatis.type.TypeHandler`接口的类,重写`...