mybatis if标签字符串判断

简介: mybatis if标签字符串判断

判断等于一个字符串


<if test=" name!=null && name =='1' "><if/>


这样写会出现后面的 name =='1'失效问题。 很多人会踩的坑

因为mybatis映射文件,是使用的ognl表达式,所以在判断字符串变量是否是字符串的时候 会把'1'解析为字符,java是强类型语言,所以不能这样写

<!--把这个转换成 单引号。这样就解决了-->
<if test=' name!=null && name == "1" '><if/>   
<!-- 推荐使用 -->
<if test=" name!=null && name == '1'.toString() "><if/>


当判断条件字符串不包含字母,需要.toString()

<if test="input eq '1'.toString()">
    and user_id = #{userId}
</if>
<if test="input eq '0'.toString()">
    and user_id != #{userId}
</if>


当判断条件字符串包含字母,不需要.toString()


<if test="name eq 'str'">
    and user_id = #{userId}
</if>
<if test="name eq 'str'">
    and user_id != #{userId}
</if>
相关文章
|
SQL XML Java
Mybatis中选择语句的使用:<choose>标签、分区排序 Row_num() over ()函数的使用呢
Mybatis中选择语句的使用:<choose>标签、分区排序 Row_num() over ()函数的使用呢
321 0
|
12月前
|
SQL Java 数据库连接
MyBatis动态SQL字符串空值判断,这个细节99%的程序员都踩过坑!
本文深入探讨了MyBatis动态SQL中字符串参数判空的常见问题。通过具体案例分析,对比了`name != null and name != &#39;&#39;`与`name != null and name != &#39; &#39;`两种写法的差异,指出后者可能引发逻辑混乱。为避免此类问题,建议在后端对参数进行预处理(如trim去空格),简化MyBatis判断逻辑,提升代码健壮性与可维护性。细节决定成败,严谨处理参数判空是写出高质量代码的关键。
1567 0
mybatis复习03,动态SQL,if,choose,where,set,trim标签及foreach标签的用法
文章介绍了MyBatis中动态SQL的用法,包括if、choose、where、set和trim标签,以及foreach标签的详细使用。通过实际代码示例,展示了如何根据条件动态构建查询、更新和批量插入操作的SQL语句。
mybatis复习03,动态SQL,if,choose,where,set,trim标签及foreach标签的用法
mybatis复习04高级查询 一对多,多对一的映射处理,collection和association标签的使用
文章介绍了MyBatis中高级查询的一对多和多对一映射处理,包括创建数据库表、抽象对应的实体类、使用resultMap中的association和collection标签进行映射处理,以及如何实现级联查询和分步查询。此外,还补充了延迟加载的设置和用法。
mybatis复习04高级查询 一对多,多对一的映射处理,collection和association标签的使用
|
SQL XML Java
Mybatis的<where>,<if>等标签用法
这篇文章详细解释了Mybatis中<where>和<if>等标签的用法,展示了如何在SQL动态构建中有效地过滤条件和处理逻辑分支。
1094 1
|
SQL Java 数据库连接
Mybatis入门(select标签)
这篇文章介绍了Mybatis中`select`标签的基本用法及其相关属性,并通过示例展示了如何配置和执行SQL查询语句。
361 0
Mybatis入门(select标签)
|
SQL Java 关系型数据库
mybatis中<if>条件判断带数字的字符串失效问题
MySQL数据库使用Mybatis查询拼接select语句中进行`<if>条件拼接`的时候,发现带数字的或者带单个字母的字符串失效问题。 举例说明:我`Log对象`有个属性`accountId是字符串类型`,假设我给它赋值为“1”,按常理sql拼接的`应该是and account_name = 'unmadmin'` ,然而实际判断拼接的`却是and account_name != 'unmadmin'`,明显感觉问题出在这里`and log.accountId == '1'` 这里校验失败了,或者说失效了,估计很多人会踩坑,那么为什么呢?不应该啊?所以此刻就是为了定位它原因。
550 1
|
SQL Java 数据库连接
Mybatis的<insert>,<update>,<delete>标签用法
这篇文章详细讲解了Mybatis中<insert>, <update>, <delete>标签的使用方法,并提供了示例代码来展示如何执行数据库的增删改操作。
1402 0
|
存储 Java 数据库连接
mybatis精讲(三)--标签及TypeHandler使用
mybatis精讲(三)--标签及TypeHandler使用
|
SQL Java 数据库连接
MyBatis Mapper.XML 标签使用说明
MyBatis Mapper.XML 标签使用说明
289 0