mybatis中的if test判断入参的值问题

 更新时间:2022年06月06日 11:47:53   作者:四块五  
这篇文章主要介绍了mybatis中的if test判断入参的值问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

mybatis if test判断入参的值

1.第一种判断方式

<if test=' requisition != null and requisition == "Y" '>
   AND 表字段 = #{requisition}
</if>

2.第二种判断方式

<if test=" requisition != null and requisition == 'Y'.toString() ">
  AND 表字段 = #{requisition}
</if>

if test动态判断数字时出现的错误

mybatis中if test判断数字

在实现搜索功能时碰到的错误,很多时候我们会在数据库中使用一个字段来作为状态保存,如:0=男,1=女;0=禁止,1=启用等。

无论我选择停用、还是启用,都将整个表格的数据显示出来,没有起到筛选的作用。

通过排除,找到了导致问题的代码:

    <select id="queryAllByLimit" resultMap="SystemMenuMap">
        select
          id, pid, title, icon, href, sort, status
        from system_menu
        <where>
            <if test="systemMenu.status != null and systemMenu.status != '' ">
                and status = #{systemMenu.status}
            </if>
        </where>
    </select>

改为:

    <select id="queryAllByLimit" resultMap="SystemMenuMap">
        select
          id, pid, title, icon, href, sort, status
        from system_menu
        <where>
            <if test="systemMenu.status != null">
                and status = #{systemMenu.status}
            </if>
        </where>
    </select>

原因:

<if test="systemMenu.status != null and systemMenu.status != '' ">

只对判断String类型的字符串时起作用,由于status是Integer类型,判断条件不成立,没起到作用。如:当传入的值是1时,’1’会被解析成字符。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Java和C的随机数(Random)详解

    Java和C的随机数(Random)详解

    本篇文章主要介绍了Java和C随机数(Random),现在分享给大家,也给大家做个参考,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2021-09-09
  • Mybatis返回map集合时,列的顺序与select不一致问题

    Mybatis返回map集合时,列的顺序与select不一致问题

    这篇文章主要介绍了Mybatis返回map集合时,列的顺序与select不一致问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-01-01
  • Java-lambda表达式入门看这一篇就够了

    Java-lambda表达式入门看这一篇就够了

    lambda表达式最简单的作用就是用于简化创建匿名内部类对象,Lambda表达式是一个可传递的代码块,可以在以后执行一次或多次,下面通过本文给大家介绍Java-lambda表达式入门教程,感兴趣的朋友一起看看吧
    2021-05-05
  • Java中Queue的poll()和remove()区别详解

    Java中Queue的poll()和remove()区别详解

    这篇文章主要介绍了Java中Queue的poll()和remove()区别详解,Queue接口提供了许多方法,其中poll()和remove()是两个常用的方法,它们的区别在于,当队列为空时,poll()方法返回null,而remove()方法会抛出,需要的朋友可以参考下
    2023-07-07
  • 手把手教你写Maven的archetype项目脚手架

    手把手教你写Maven的archetype项目脚手架

    本文主要介绍了Maven的archetype项目脚手架,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-08-08
  • Java如何比较两个任意文件是否相同

    Java如何比较两个任意文件是否相同

    这篇文章主要为大家详细介绍了Java如何实现比较两个任意文件是否相同,文中的示例代码简洁易懂,感兴趣的小伙伴可以跟随小编一起学习一下
    2024-04-04
  • Java7和Java8中的ConcurrentHashMap原理解析

    Java7和Java8中的ConcurrentHashMap原理解析

    这篇文章主要介绍了Java7和Java8中的ConcurrentHashMap原理解析,对ConcurrentHashMap感兴趣的读者,一定要好好看一下
    2021-04-04
  • 被遗忘的Java关键字transient的使用详解

    被遗忘的Java关键字transient的使用详解

    在 Java 中,transient 是一个关键字,用于指定一个类的字段(成员变量)在序列化时应该被忽略。本文将通过示例为大家简单讲讲transient的使用,需要的可以参考一下
    2023-04-04
  • java通过Arrays.sort(int[] a)实现由大到小排序的方法实现

    java通过Arrays.sort(int[] a)实现由大到小排序的方法实现

    Java中的Arrays.sort()方法是一种内置的排序方法,用于对数组进行排序,本文就来介绍一下java中的Arrays.sort()排序方法的用法,具有一定的参考价值,感兴趣的可以了解一下
    2023-12-12
  • 仿京东平台框架开发开放平台(包含需求,服务端代码,SDK代码)

    仿京东平台框架开发开放平台(包含需求,服务端代码,SDK代码)

    现在开放平台越来越多了,下面针对仿京东开放平台框架,封装自己的开放平台,分享给大家。先感谢一下京东开放平台的技术大佬们,下面从开放平台需求,服务端代码,SDK代码三大块进行分享
    2021-06-06

最新评论